leetcode(3)——697. 数组的度(C++版本注释)(map容器),448. 找到所有数组中消失的数字(取余操作,C++中的auto类型)
生活随笔
收集整理的這篇文章主要介紹了
leetcode(3)——697. 数组的度(C++版本注释)(map容器),448. 找到所有数组中消失的数字(取余操作,C++中的auto类型)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 前言
- 697
- 程序
- 思路
- 收獲
- map容器
- 448
- 程序
- 收獲
- 取模操作的思考
- auto
前言
大佬的程序,邊刷邊總結邊學語言。
題目697
697
程序
class Solution { public:int findShortestSubArray(vector<int>& nums) {if (nums.size() < 2) return nums.size();map<int, int> startIndex, count;int len = nums.size(), fre = 0;for (int i = 0; i < nums.size() ;i++) {// startIndex 存儲數字第一次出現的位置索引if (startIndex.count(nums[i]) == 0) startIndex[nums[i]] = i;// cout 存儲對應數字出現的次數count[nums[i]]++;//如果出現相同頻次的數字,那么就算這個數所組成的連續數組長度;最后取上一個數所組成的連續數組長度與這個數所組成的連續數組長度中最小的那個;if (count[nums[i]] == fre) {len = min(i - startIndex[nums[i]] + 1, len);}//記錄出現頻次更高的數所組成的連續數組的度if (count[nums[i]] > fre) {len = i - startIndex[nums[i]] + 1;fre = count[nums[i]];}}return len;} };思路
記錄每個數第一次出現的位置(因為要找到和主數組擁有相同的度的最短的數組的長度),再找到每個數出現的頻率(為了找到出現次數的最多的數,確定其數組的度).
收獲
map容器
map
448
題目描述:
給定一個范圍在 1 ≤ a[i] ≤ n ( n = 數組大小 ) 的 整型數組,數組中的元素一些出現了兩次,另一些只出現一次。
找到所有在 [1, n] 范圍之間沒有出現在數組中的數字。
您能在不使用額外空間且時間復雜度為O(n)的情況下完成這個任務嗎? 你可以假定返回的數組不算在額外空間內。
程序
力扣官方解題思路
/****************************448. 找到所有數組中消失的數字**********************/vector<int> findDisappearedNumbers(vector<int>& nums) {// 首先所有數值x都在數組nums長度n之內,那么所有nums[x-1]都應該在nums長度之內,因此如果所有nums[x-1]+n>n,這是句廢話。// 然后遍歷所有+n操作之后的nums,就能找到沒有出現的i+1,即nums[i]<nint n = nums.size();for (auto&num : nums){int x = (num - 1) % n;nums[x] += n;}vector<int> list;for (int i; i < n;i++){if (nums[i] <= n)list.push_back(i+1);}return list;}收獲
取模操作的思考
int x = (num - 1) % n;這里是考慮了,有的元素在遍歷到之前就加過n了,所以要把多余的n去掉。
取模是把n,成塊成塊地從num中去掉,的到最后剩下的元素。
(num - 1) % n = num % n - 1%n;
auto
先附上大佬的鏈接
auto的原理就是根據后面的值,來自己推測前面的類型是什么。
auto的作用就是為了簡化變量初始化,如果這個變量有一個很長很長的初始化類型,就可以用auto代替。
如果是可用迭代器的對象的話,就像上面的程序所示,auto在這里就是簡單的替換了int類型:
int main(){vector<int>v;v.push_back(1);v.push_back(2);v.push_back(3);for(auto i : v){cout<<i<<" ";}cout<<endl;return 0; }總結
以上是生活随笔為你收集整理的leetcode(3)——697. 数组的度(C++版本注释)(map容器),448. 找到所有数组中消失的数字(取余操作,C++中的auto类型)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器人运动规划调研(pending)
- 下一篇: Windows 10 下 VS2017(