leetcode--Contains Duplicate II
来源:互联网 发布:mac os 10.12 beta5 编辑:程序博客网 时间:2024/05/22 13:31
题目: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.
题目分析:若数组中存在两个元素相等且index值的差小于等于k返回true,否则返回false。
One:运用HashMap的方法
public class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { if(nums==null||nums.length==0)return false; Map<Integer,Integer> map = new HashMap<Integer,Integer>(); for(int i = 0;i < nums.length;i++){ if(map.containsKey(nums[i])){ if(i-map.get(nums[i])<=k){ return true; }else{ map.remove(nums[i]); map.put(nums[i],i); } } map.put(nums[i],i); } return false; }}Two:了解了HashMap的put方法若键值已存在返回旧键值的value,不存在加入map,且返回null。进一步对代码进行优化如下:
public class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { Map<Integer,Integer> map = new HashMap<Integer,Integer>(); for(int i = 0;i < nums.length;i++){ Integer oldv = map.put(nums[i],i); if(oldv!=null&&i - oldv <= k){ return true; } } return false; }}
Three:用HashSet的方法,及时保持HashSet的长度小于等于k
public class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { Set<Integer> set = new HashSet<Integer>(); for(int i = 0;i < nums.length;i++){ if(i>k) set.remove(nums[i-k-1]); if(!set.add(nums[i])) return true; } return false; }}Four:对比两条语句放在前和后的区别
public boolean containsNearbyDuplicate(int[] nums, int k) { HashSet<Integer> hs=new HashSet<>(); for(int i=0;i<nums.length;i++) { if(hs.add(nums[i])==false) return true; if(hs.size()==k+1) hs.remove(nums[i-k]); } return false;}
0 0
- [LeetCode]Contains Duplicate II
- [LeetCode] Contains Duplicate II
- leetcode Contains Duplicate II
- LeetCode Contains Duplicate II
- [leetcode] Contains Duplicate II
- LeetCode Contains Duplicate II
- 【leetcode】Contains Duplicate II
- leetcode--Contains Duplicate II
- [leetcode]Contains Duplicate II
- [leetCode] Contains Duplicate II
- LeetCode: Contains Duplicate II
- LeetCode Contains Duplicate II
- LeetCode | Contains Duplicate II
- LeetCode Contains Duplicate II
- 【LeetCode】Contains Duplicate II
- leetcode: Contains Duplicate II
- LeetCode Contains Duplicate II
- Leetcode: Contains Duplicate II
- 链表的增删改查
- hadoop mapreduce 调试(system.out.println log4j)
- 架构、框架和设计模式关系
- 游标和指针
- 【Mysql】分组取得最新值的相关SQL改写
- leetcode--Contains Duplicate II
- Dialog 中有EditText时,打开自动弹出软键盘,关闭时隐藏软键盘
- 贝塞尔曲线初探
- oracle的自带事务
- SpringMVC 异常处理
- Markdown使用手册
- 网站性能优化/数据库调优
- js运算符的优先级
- windows 10 ISO 纯净版 官方来源