标签:利用 win als nbsp solution tor 两种 null 返回
两种方法
方法一:扫描数组,在指针指向的元素+k范围内寻找是否有相同元素,找到则返回,没找到则继续扫描。
1 static const auto _____ = []() 2 { 3 ios::sync_with_stdio(false); 4 cin.tie(nullptr); 5 return nullptr; 6 }(); 7 8 class Solution { 9 public: 10 bool containsNearbyDuplicate(vector<int>& nums, int k) { 11 if (k >= 35000) 12 return false; 13 14 int currentNum; 15 for(int i = 0; i< nums.size(); i++) 16 { 17 currentNum = nums[i]; 18 for(int j = i + 1; j <= i + k && j < nums.size(); j++) 19 { 20 if(currentNum == nums[j]) 21 return true; 22 } 23 } 24 return false; 25 26 } 27 };
方法二:利用关联容器,扫描数组,并检测关联容器,若容器内已有该关键值,则计算当前距离,若没有,则放入容器内。关键值为数组元素,值为元素对应下标。
最后对比最小距离和给定的k,即可输出。
1 static int wing=[]() 2 { 3 std::ios::sync_with_stdio(false); 4 cin.tie(NULL); 5 return 0; 6 }(); 7 8 class Solution 9 { 10 public: 11 bool containsNearbyDuplicate(vector<int>& nums, int k) 12 { 13 if(k>=35000) 14 return false; 15 unordered_map<int,int> imap; 16 int mindis=INT_MAX; 17 int sz=nums.size(); 18 for(int i=0;i<sz;i++) 19 { 20 if(imap.count(nums[i])==1) 21 { 22 int curdis=i-imap[nums[i]]; 23 mindis=min(curdis,mindis); 24 } 25 imap[nums[i]]=i; 26 } 27 return mindis<=k; 28 } 29 };
标签:利用 win als nbsp solution tor 两种 null 返回
原文地址:https://www.cnblogs.com/zhuangbijingdeboke/p/9077491.html