Contains Duplicate II
来源:互联网 发布:鲁道夫·阿贝尔知乎 编辑:程序博客网 时间:2024/06/03 21:22
Given an array of integers and an integer k, find out whether there there are two distinct indices i and j in the array such that nums[i] = nums[j] and the difference between iand j is at most k.
解题思路:
给定一个整型数组和一个整数k。如果这个数组中位置相差不超过k的两个数相同,则返回true,否则返回false.也就是找数组中k长子序列中是否有重复元素。
解题方法:
数组中k长子序列有很多,就像一个滑动的窗口,从0~k-1直到n-k+1~n.如果用普通遍历方法,当数组过长时会超时。我们用STL 中的set。只有唯一key值。
代码如下:
class Solution {public: bool containsNearbyDuplicate(vector<int>& nums, int k) { if(k<0) return false; if(k>=nums.size()) k=nums.size()-1; unordered_set<int> s; for(int i=0;i<nums.size();i++) { if(i>k) s.erase(nums[i-k-1]);//限制窗口长度为k。 if(s.find(nums[i])!=s.end()) return true;//找集合s中值为nums[i]的元素的位置,如果没有遍历到最后就找到了,则说明其中有重 //复元素 s.insert(nums[i]); } return false; }};
0 0
- Contains Duplicate && Contains Duplicate II
- [LeetCode]Contains Duplicate II
- Contains Duplicate II
- [LeetCode] Contains Duplicate II
- leetcode Contains Duplicate II
- LeetCode Contains Duplicate II
- [leetcode] Contains Duplicate II
- LeetCode Contains Duplicate II
- LeetCode219:Contains Duplicate II
- #219 Contains Duplicate II
- 219. Contains Duplicate II
- 【leetcode】Contains Duplicate II
- leetcode--Contains Duplicate II
- 219Contains Duplicate II
- Contains Duplicate II
- Contains Duplicate II
- Contains Duplicate II
- Leetcode_219 Contains Duplicate II
- linux 查看头文件中的函数
- 基于Qt有限状态机人工智能的一种实现及改进方法
- C++——windows结构异常转化成C++异常
- c编程技巧——获取可用的处理器(CPU)核数
- 使用U盘安装WIN7系统疑难问题总结
- Contains Duplicate II
- LaTeX练习
- C++——try、throw、catch实例学习程序
- LeetCode——Merge Sorted Array
- UVa - 1153 - Keep the Customer Satisfied
- 反射
- jsp页面 ajax实现多图上传
- Upload files by sending multipart request programmatically
- 网络编程