做网站优化公司排行,天津网站制作西安,专业做化妆品的网站有哪些,网站建设图片logo文章目录 前言找不同最长回文串找到所有数组中消失的数字下一个更大元素 I键盘行 前言 #x1f4ab;你好#xff0c;我是辰chen#xff0c;本文旨在准备考研复试或就业 #x1f4ab;文章题目大多来自于 leetcode#xff0c;当然也可能来自洛谷或其他刷题平台 #x1f4ab… 文章目录 前言找不同最长回文串找到所有数组中消失的数字下一个更大元素 I键盘行 前言 你好我是辰chen本文旨在准备考研复试或就业 文章题目大多来自于 leetcode当然也可能来自洛谷或其他刷题平台 欢迎大家的关注我的博客主要关注于考研408以及AIoT的内容 仅给出C版代码 以下的几个专栏是本人比较满意的专栏(大部分专栏仍在持续更新)欢迎大家的关注 ACM-ICPC算法汇总【基础篇】 ACM-ICPC算法汇总【提高篇】 AIoT(人工智能物联网) 考研 CSP认证考试历年题解 找不同 题目链接找不同
C版AC代码
哈希
class Solution {
public:char findTheDifference(string s, string t) {unordered_mapchar, int m;for (int i 0; i s.size(); i ) m[s[i]] ;for (int i 0; i t.size(); i ) m[t[i]] --;char res;for (auto i m.begin(); i ! m.end(); i )if (i - second -1){res i - first;break;}return res;}
};C版AC代码
题解中一种有趣的解法累加 t 串的 ASCII累加 s 串的 ASCII相减即为多出的字符的 ASCII
class Solution {
public:char findTheDifference(string s, string t) {int ascii 0;for (int i 0; i t.size(); i ) ascii t[i] - a;for (int i 0; i s.size(); i ) ascii - s[i] - a;return a ascii;}
};最长回文串 题目链接最长回文串
C版AC代码
class Solution {
public:int longestPalindrome(string s) {unordered_mapchar, int m;for (int i 0; i s.size(); i ) m[s[i]] ;int res 0, odd 0;for (auto i m.begin(); i ! m.end(); i ){int k i - second;if (!(k % 2)) res k;else{res k - 1;odd 1;}}return res odd;}
};找到所有数组中消失的数字 题目链接找到所有数组中消失的数字
C版AC代码
class Solution {
public:vectorint findDisappearedNumbers(vectorint nums) {vectorint res;unordered_mapint, int m;for (int k : nums) m[k] 1;for (int i 1; i nums.size(); i ) if (!m.count(i)) res.push_back(i);return res;}
};下一个更大元素 I 题目链接下一个更大元素 I
C版AC代码
单调栈哈希表单调栈适用于求下一个更大的元素维护一个从栈顶到栈底单调递增的栈栈顶元素若存在的话即为当前元素右边的比他大的第一个元素因此在构建单调栈的时候需要逆序遍历 nums2在当前元素 st.top() 的时候需要弹出栈顶的元素直至栈空或栈顶元素大于当前元素。
class Solution {
public:vectorint nextGreaterElement(vectorint nums1, vectorint nums2) {unordered_mapint, int m;stackint st;for (int i nums2.size() - 1; i 0; -- i){while (!st.empty() nums2[i] st.top()) st.pop();m[nums2[i]] st.empty() ? -1 : st.top();st.push(nums2[i]);}vectorint res(nums1.size());for (int i 0; i nums1.size(); i ) res[i] m[nums1[i]];return res;}
};键盘行 题目链接键盘行
C版AC代码
屎山代码自己看的都难受不太想写了赶紧打个卡而已祝大家新年快乐
class Solution {
public:vectorstring findWords(vectorstring words) {vectorstring res;string s0 qwertyuiop, s1 asdfghjkl, s2 zxcvbnm;for (auto word : words){string tmp word;for (int i 0; i word.size(); i ) {if (word[i] A word[i] Z) word[i] 32; // 根据ASCII大写变小写}bool flag true;int key;if (s0.find(word[0]) ! -1) key 0;else if (s1.find(word[0]) ! -1) key 1;else key 2;for (int i 1; i word.size(); i ){if (key 0){ // 第一行if (s0.find(word[i]) -1){ flag false;break;}}else if (key 1){ // 第二行if (s1.find(word[i]) -1){flag false;break;}}else { // 第三行if (s2.find(word[i]) -1){flag false;break;}}}if (flag) res.push_back(tmp);}return res;}
};