【Leetcode】Contains Duplicate II
2015-12-06 11:04
323 查看
题目链接:https://leetcode.com/problems/contains-duplicate-ii/
题目:
Given an array of integers and an integer k,
find out whether there are two distinct indices i and j in
the array such that nums[i] = nums[j] and
the difference between i and j is
at most k.
思路:
1、用HashMap保存元素的下标,如果出现重复元素,则判断是否满足 i-j<=k,不满足则更新HashMap保存的下标,因为后面的元素可能还有重复,要跟最近的重复元素比较距离。
2、用Set,具体看代码。。。时间久了我也忘了具体怎么做的。。。。
算法1:
算法2:
题目:
Given an array of integers and an integer k,
find out whether there are two distinct indices i and j in
the array such that nums[i] = nums[j] and
the difference between i and j is
at most k.
思路:
1、用HashMap保存元素的下标,如果出现重复元素,则判断是否满足 i-j<=k,不满足则更新HashMap保存的下标,因为后面的元素可能还有重复,要跟最近的重复元素比较距离。
2、用Set,具体看代码。。。时间久了我也忘了具体怎么做的。。。。
算法1:
public boolean containsNearbyDuplicate(int[] nums, int k) { HashMap<Integer, Integer> set = new HashMap<Integer, Integer>(); for (int i = 0; i < nums.length; i++) { if (!set.containsKey(nums[i])) { set.put(nums[i], i);// 记录起始位置 } else { if (i - set.get(nums[i]) <= k) { return true; } else { set.put(nums[i], i); } } } return false; }
算法2:
public boolean containsNearbyDuplicate(int[] nums, int k) { Set<Integer> set = new HashSet<Integer>(); int start = 0, end = 0; for (int i = 0; i < nums.length; i++) { if (!set.contains(nums[i])) { set.add(nums[i]); end++; } else return true; if (end - start > k) { set.remove(nums[start]); start++; } } return false; }
相关文章推荐
- Brainman
- Bad Hair Day
- train test 划分 转自 http://blog.sina.com.cn/s/blog_6a90ae320101a5rc.html
- 1014. Waiting in Line (30)
- mybaits学习笔记(一)
- DNA repair
- hdoj Airport 5046 () 好题
- 如果人工智能就在不远的未来,你该怎样布局当下?
- 【PAT】1106. Lowest Price in Supply Chain (25)
- 模块度与Louvain社区发现算法
- lightoj1366Pair of Touching Circles
- Configure Domain Classes(配置领域类)【EF Code-First 系列】
- ML、CV和AI等领域的一些顶级会议
- Project Euler 95:Amicable chains 亲和数链
- http://airos.blog.51cto.com/10853324/1719870
- 马尔可夫聚类算法(MCL)
- Timus Online Judge 1577 E-mail(字符串DP)
- SaltStack入门(二)Grains、NoteGroup和State
- Assertion failure in -[MASViewConstraint install]
- HDOJ--2674--N!Again