复试 || 就业day03(2023.12.29)算法篇

23 篇文章 4 订阅
23 篇文章 3 订阅

前言

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

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

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

同构字符串


题目链接:同构字符串

C++版AC代码:

哈希表,注意.count() 是用来查找表里是否有该元素,哈希只需要保存离遍历元素最近的一次出现位置即可。

class Solution {
public:
    bool isIsomorphic(string s, string t) {
        unordered_map<char, int> m1, m2;
        for (int i = 0; i < s.size(); i ++ ){
            char a = s[i], b = t[i];
            if ((m1.count(a) && !m2.count(b)) || (!m1.count(a) && m2.count(b))) return false;
            if (m1[a] != m2[b]) return false;
            m1[a] = i, m2[b] = i;
        }
        return true;
    }
};

存在重复元素


题目链接:存在重复元素

C++版AC代码:

最基础的哈希表

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        unordered_map<int, int> m;
        for (int i = 0; i < nums.size(); i ++ ){
            if (m.find(nums[i]) != m.end()) return true;
            m[nums[i]] = 1;
        }
        return false;
    }
};

有效的字母异位词


题目链接:有效的字母异位词

C++版AC代码:

class Solution {
public:
    bool isAnagram(string s, string t) {
        if (s.size() != t.size()) return false;
        unordered_map<char, int> m1, m2;
        for (int i = 0; i < s.size(); i ++ ){
            char a = s[i], b = t[i];
            m1[a] ++, m2[b] ++;
        }
        for (int i = 0; i < s.size(); i ++ ){
            char a = s[i];
            if (m1[a] != m2[a]) return false;
        }
        return true;
    }
};

丢失的数字


题目链接:丢失的数字

C++版AC代码:

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int a[10010] = {0};
        for (int i = 0; i < nums.size(); i ++ ) a[nums[i]] ++;
        int i = 0;
        for (; i <= 1e4; i ++ ) 
            if (!a[i]) break;
        return i;
    }
};

单词规律


题目链接:单词规律

C++版AC代码:

双哈希,因为两个符号串都需要一一对应,所以需要开两个哈希表,分别记录 pattern 到 s 的映射以及 s 到 pattern 的映射,str.substr(pos, len); 用来返回从 pos 号位开始,长度为 len 的子串

class Solution {
public:
    bool wordPattern(string pattern, string s) {
        unordered_map<char, string> p2s;
        unordered_map<string, char> s2p;
        int n = pattern.size(), m = s.size();
        int wordStart = 0, wordEnd = 0;       // 用于标记单词的位置
        for (int i = 0; i < n; i ++ ){
            if (wordStart >= m) return false;       // s串已经遍历完了但是pattern串还没遍历完
            int j;
            for (j = wordStart; j < m && s[j] != ' '; j ++ );  // 用来找到单词
            wordEnd = j;
            string word = s.substr(wordStart, wordEnd - wordStart);  // 把该单词截出来
            char c = pattern[i];
            if (p2s.count(c) && p2s[c] != word || s2p.count(word) && s2p[word] != c) 
                return false;  // p2s中有该字符但对应的不是这个单词或者s2p中有该单词但是对应的不是这个字符
            p2s[c] = word;          // 更新 p2s
            s2p[word] = c;          // 更新 s2p
            wordStart = wordEnd + 1, wordEnd = wordStart;    // 更新单词的标记
        }
        if (wordStart == m + 1) return true;       // 正常遍历结束符合题意即为 wordStart == m + 1
        else return false;
    }
};

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
计算机考研复试面试常问问题数据结构.pdf是一份关于计算机考研复试中常见的数据结构问题集合的文档。在这份文档中,可能会涉及到以下几个方面的问题: 1. 数据结构的基本概念和分类:面试官可能会对你的数据结构基础进行考察,问你数据结构的定义、基本概念、常见的数据结构分类以及它们的特点等。 2. 数组、链表和栈的实现和应用:面试官可能会询问数组、链表和栈的基本实现方式,比如数组的特点、随机存取和顺序存储等,链表的特点和不同类型的链表,以及栈的实现和应用场景等。 3. 队列和树的实现和应用:面试官可能会问到队列和树的基本实现方式和应用场景。例如,队列的特点和实现方式、循环队列和链式队列的区别,二叉树和平衡二叉树的特点和应用等。 4. 图的基本概念和常见算法:面试官可能会询问图的基本概念,如有向图和无向图的概念及其区别,图的存储方式以及常见的图算法,如最短路径算法、深度优先搜索和广度优先搜索等。 在面试过程中,回答这些问题时应该尽量简明扼要,清晰明了地表达自己的观点。同时,可以结合实际案例或代码实现进行说明,以展示自己对数据结构的理解和应用能力。最后,还应积极与面试官进行沟通交流,回答问题时注意语言表达和思维逻辑的准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辰chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值