LeetCode219.存在重复II
2018-03-28 18:46
295 查看
题目
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使 nums [i] = nums [j],并且 i 和 j 的绝对差值最大为 k。分析
和217存在重复很像,多加一层判断,注意那种情况:[1,2,1,1] k=1 ,虽然第一个 1 和第三个第四个 1 都不符合条件,但是第三个和第四个 1 符合条件。代码
class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { Map<Integer,List<Integer>> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) if (map.containsKey(nums[i])){ List<Integer> temp = map.get(nums[i]); for (int j = 0; j < temp.size(); j++) if ( i - temp.get(j) <= k && i - temp.get(j) != 0) return true; else { List<Integer> tempp = new ArrayList<>(temp); tempp.add(i); map.put(nums[i],tempp); } }else { List<Integer> temp = new ArrayList<>(); temp.add(i); map.put(nums[i],temp); } return false; } }
相关文章推荐
- [LeetCode] Contains Duplicate II 包含重复值之二
- [LeetCode] 82. Remove Duplicates from Sorted List II 从分类列表中删除重复项目 II @python
- leetcode 7. 在有序可重复数组旋转后搜索 Search in Rotated Sorted Array II
- Leetcode|Find Minimum in Rotated Sorted Array II(有重复元素的二分查找)
- [Leetcode] Remove duplicates from sorted array ii 从已排序的数组中删除重复元素
- LeetCode Contains Duplicate II (判断重复元素)
- LeetCode: Remove Duplicates from Sorted Array II(在排序数组中删除重复元素)
- LeetCode | Remove Duplicates from Sorted Array II(删除重复的元素2)
- LeetCode 219 Contains Duplicate II(包含重复数字2)(*)
- leetCode 80.Remove Duplicates from Sorted Array II (删除排序数组中的重复II) 解题思路和方法
- Remove Duplicates from Sorted Array II 从有序数组里移除重复出现元素,最多重复出现2次 @LeetCode
- leetcode 题解:Remove Duplicates from Sorted Array II(已排序数组去三次及以上重复元素)
- 154.leetcode Find Minimum in Rotated Sorted Array II(hard)[排序数组 重复元素 二分查找]
- LeetCode—*Combination Sum II(DFS算法C数组中有重复值)
- 【LeetCode-面试算法经典-Java实现】【219-Contains Duplicate II(包含重复元素II)】
- leetCode 82.Remove Duplicates from Sorted List II (删除排序链表的重复II) 解题思路和方法
- LeetCode Search in Rotated Sorted Array II -- 有重复的旋转序列搜索
- leetcode 287. Find the Duplicate Number 数组重复元素查询 + 环的存在判定 + 快慢指针 + 很妙的想法
- [LeetCode] 219. Contains Duplicate II 包含重复元素 II
- [LeetCode] Find Minimum in Rotated Sorted Array II (包含递增和递减旋转,含有重复数字)