这是四则或许对你有些许帮助的信息:
1、👉 最近我发现了一个每日都会推送最新校招资讯的《校招日程》文档,其中包括往届补录、应届实习校招信息,比如各种大厂、国企、银行、事业编等信息都会定期更新,帮忙扩散一下。
2、😍 免费分享阿秀个人学习计算机以来收集到的免费学习资源,点此白嫖;也记录一下自己以前买过的不错的计算机书籍、网络专栏和垃圾付费专栏。
3、🚀如果你想在校招中顺利拿到更好的offer,阿秀建议你多看看前人踩过的坑和留下的经验,事实上你现在遇到的大多数问题你的学长学姐师兄师姐基本都已经遇到过了。
4、🔥 欢迎准备计算机校招的小伙伴加入我的学习圈子,一个人踽踽独行不如一群人报团取暖,圈子里沉淀了很多过去21/22/23届学长学姐的经验和总结,好好跟着走下去的,最后基本都可以拿到不错的offer!此外,每周都会进行精华总结和分享!如果你需要《阿秀的学习笔记》网站中📚︎校招八股文相关知识点的PDF版本的话,可以点此下载 。
# 594. 最长和谐子序列
力扣原题链接(点我直达) (opens new window)
和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。
现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。
示例 1:
输入: [1,3,2,2,5,2,3,7]
输出: 5
原因: 最长的和谐数组是:[3,2,2,2,3].
1
2
3
2
3
说明: 输入的数组长度最大不超过20,000.
# 第一版,犯糊涂了,要用有序的map才对,中规中矩
执行用时 :136 ms, 在所有 cpp 提交中击败了59.33%的用户
内存消耗 :20.7 MB, 在所有 cpp 提交中击败了51.40%的用户
int findLHS(vector<int>& nums) {
if (nums.size() <= 1) return 0;
sort(nums.begin(), nums.end(), greater<int>());
map<int, int> result;//元素,次数
int maxLen = 0, temp,len=nums.size();
for (unsigned i = 0; i < len; ++i) {
result[nums[i]]++;
}
for (auto beg = result.begin(), beg2 = ++result.begin(); beg2 != result.end() && beg != result.end();++beg,++beg2 ) {
if (1+beg->first == beg2->first) {
temp = beg->second + beg2->second;
maxLen = temp > maxLen ? temp : maxLen;
// cout << maxLen << endl;
// cout << beg->first << " " << beg2->first << " " << temp << endl;
}
}
// cout << maxLen << endl;
return maxLen;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26