[刷题] LeetCode 219 Contains Duplicate II

要求

  • 给出整型数组nums和整数k,是否存在索引i和j,nums[i]==nums[j],且i和j之间的差不超过k

思路

  • 暴力解法(n2)
  • 建立最长为k+1的滑动窗口,用查找表查找元素(时间n,空间k)
 1 class Solution {
 2 public:
 3     bool containsNearbyDuplicate(vector<int>& nums, int k) {
 4         
 5         unordered_set<int> record;
 6         for( int i ; i < nums.size() ; i ++ ){
 7             if( record.find(nums[i]) != record.end() )
 8                 return true;
 9             record.insert( nums[i] );
10             
11             // 保持record中最多有k个元素 
12             if( record.size() == k+1 )
13                 record.erase( nums[i-k] );
14         }
15         return false; 
16     }
17 };
View Code

相关

  • 217 Contains Duplicate

猜你喜欢

转载自www.cnblogs.com/cxc1357/p/12624599.html