复试 || 就业day12(2024.01.08)算法篇

前言

💫你好,我是辰chen,本文旨在准备考研复试或就业
💫文章题目大多来自于 leetcode,当然也可能来自洛谷或其他刷题平台
💫欢迎大家的关注,我的博客主要关注于考研408以及AIoT的内容
🌟 仅给出C++版代码

以下的几个专栏是本人比较满意的专栏(大部分专栏仍在持续更新),欢迎大家的关注:

💥ACM-ICPC算法汇总【基础篇】
💥ACM-ICPC算法汇总【提高篇】
💥AIoT(人工智能+物联网)
💥考研
💥CSP认证考试历年题解

旅行终点站


题目链接:旅行终点站

C++版AC代码:

class Solution {
   
public:
    string destCity(vector<vector<string>>& paths) {
   
        // 理解成找出度为0的结点(由题结果必然存在)
        unordered_map<string, int> m;
        for (int i = 0; i < paths.size(); i ++ ) {
   
            string add = paths[i][0];    // 统计有出度的点
            m[add] = 1;
        }
        string res;
        for (int i = 0; i < paths.size(); i ++ ) {
   
            string ed = paths[i][1];     // 找所有出度可能为0的点
            if (!m.count(ed)) {
   
                res = ed;
                break;
            }
        }
        return res;
    }
};

通过翻转子数组使两个数组相等


题目链接:通过翻转子数组使两个数组相等

C++版AC代码:

class Solution {
   
public:
    bool canBeEqual(vector<int>& target, vector<int>& arr) {
   
        unordered_map<int, int> m;
        for (int i = 0; i < target.size(); i ++ ) m[target[i]] ++;
        bool flag = true;
        for (int i = 0; i < arr.size(); i ++ ) {
   
            if (m.count(arr[i]) && m[arr[i]] >= 1) m[arr[i]] --;
            else {
   
                flag = false;
                break;
            }
        }
        return flag;
    }
};

判断路径是否相交


题目链接:判断路径是否相交

C++版AC代码:

原本想用坐标哈希的,但是不能套 pair,根据题目范围:1 <= path.length <= 1e4,故可以把横坐标映射为 1e5,纵坐标映射为 1,映射成 double 类型的 10.00001 的话会有精度问题

class Solution {
   
public:
    bool isPathCrossing(string path) {
   
        unordered_map<int, int> m;
        m[0] = 1;
        double nowad = 0;
        bool flag = false;
        for (int i = 0; i < path.size(); i ++ ) {
   
            char ad = path[i];
            if (ad == 'N') nowad += 1e5;
            else if (ad == 'S') nowad -= 1e5;
            else if (ad == 'E') nowad += 1;
            else nowad -= 1;
            if (m.count(nowad)) {
   
                flag = true;
                break;
            }
            m[nowad] = 1;
        }
        return flag;
    }
};

两个相同字符之间的最长子字符串


题目链接:两个相同字符之间的最长子字符串

C++版AC代码:

class Solution {
   
public:
    int maxLengthBetweenEqualCharacters(string s) {
   
        unordered_map<char, int> m;
        for (int i = 0; i < s.size(); i ++ ) m[s[i]] = i;   // 记录最后一次出现的位置
        int res = -1;
        for (int i = 0; i < s.size(); i ++ ) 
            res = max(res, m[s[i]] - i - 1);
        return res;
    }
};

按照频率将数组升序排序


题目链接:按照频率将数组升序排序

C++版AC代码:

注意对 sort 的定义与调用

class Solution {
   
public:
    vector<int> frequencySort(vector<int>& nums) {
   
        unordered_map<int, int> m;
        for (int i = 0; i < nums.size(); i ++ ) m[nums[i]] ++;
        sort(nums.begin(), nums.end(), [&](const int a, const int b) {
   
            if (m[a] == m[b]) return a > b;
            return m[a] < m[b];
        });
        return nums;
    }
    
};

能否连接形成数组 *


题目链接:能否连接形成数组

C++版AC代码:

class Solution {
   
public:
    bool canFormArray(vector<int>& arr, vector<vector<int>>& pieces) {
   
        unordered_map<int, int> m;
        for (int i = 0; i < pieces.size(); i ++ ) 
            m[pieces[i][0]] = i;      // 仅标记第一个
        for (int i = 0; i < arr.size();) {
         // 注意这里没有 i ++
            int k = arr[i];
            if (!m.count(k)) return false;
            int ad = m.find(k) -> second;
            for (int j = 0; j < pieces[ad].size(); j ++, i ++ ) // i 在此更新
                if (arr[i] != pieces[ad][j]) 
                    return false;
        }
        return true;
    }
};

关于sort

sort(nums.begin(), nums.end(), [&](const int a, const int b) {
   
	if (m[a] == m[b]) return a > b;
	return m[a] < m[b];
});

相关推荐

  1. 复试 || 就业day01(2023.12.27)算法

    2024-01-09 14:00:01       45 阅读
  2. 复试 || 就业day02(2023.12.28)算法

    2024-01-09 14:00:01       66 阅读
  3. 复试 || 就业day06(2024.01.01)算法

    2024-01-09 14:00:01       66 阅读
  4. 复试 || 就业day09(2024.01.04)算法

    2024-01-09 14:00:01       54 阅读
  5. 复试 || 就业day11(2024.01.07)算法

    2024-01-09 14:00:01       49 阅读
  6. 复试 || 就业day12(2024.01.08)算法

    2024-01-09 14:00:01       68 阅读
  7. 复试 || 就业day13(2024.01.09)算法

    2024-01-09 14:00:01       57 阅读
  8. 复试 || 就业day15(2024.01.13)算法

    2024-01-09 14:00:01       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-09 14:00:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-09 14:00:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-09 14:00:01       82 阅读
  4. Python语言-面向对象

    2024-01-09 14:00:01       91 阅读

热门阅读

  1. spring aop

    2024-01-09 14:00:01       62 阅读
  2. Docker 中使用超级用户

    2024-01-09 14:00:01       60 阅读
  3. docker+cassandra

    2024-01-09 14:00:01       62 阅读
  4. How to view the high-tech zone atmospheric project

    2024-01-09 14:00:01       57 阅读
  5. RTTI(运行时类型识别)

    2024-01-09 14:00:01       50 阅读
  6. SpringBoot:泛型对象存取与转换<JedisPool>

    2024-01-09 14:00:01       60 阅读
  7. MySQL5.7 InnoDB 磁盘结构之Table

    2024-01-09 14:00:01       54 阅读
  8. setattr()函数的理解

    2024-01-09 14:00:01       63 阅读
  9. uni-app顶部导航条固定

    2024-01-09 14:00:01       66 阅读
  10. uni-app的优缺点?

    2024-01-09 14:00:01       48 阅读
  11. golang指针介绍

    2024-01-09 14:00:01       58 阅读
  12. Golang 协程与通道

    2024-01-09 14:00:01       60 阅读
  13. 计算机视觉(CV)技术

    2024-01-09 14:00:01       46 阅读