本文主要是介绍LEETCDE 220. 存在重复元素 III,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
class Solution {
public:long long size;bool containsNearbyAlmostDuplicate(vector<int>& nums, int indexDiff, int valueDiff) {//桶排序unordered_map<long,long> m;size=valueDiff+1;for(int i=0;i<nums.size();i++){//控制数值long long idx=getID(nums[i]);if(m.find(idx)!=m.end()){return true;}if(m.find(idx-1)!=m.end() && abs(nums[i] - m[idx-1]) <= valueDiff){return true;}if(m.find(idx+1)!=m.end() && abs(nums[i] - m[idx+1]) <= valueDiff){return true;}m[idx]=nums[i];if(i>=indexDiff)m.erase(getID(nums[i-indexDiff]));}return false;}long long getID(int x){long long u=x*1L;return u>=0?(u/size):(((u+1)/size)-1);}
};
不是控制index,index只用滑动窗口 for循环+一个“ i>indexdiiff” 判断
抓valuediff 桶排序,一个桶里,一个valuediff gap.抓的是值。在一个桶里说明值是符合(3)条件
这篇关于LEETCDE 220. 存在重复元素 III的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!