LeetCode(43)-Contains Duplicate II
2016-04-11 11:27
471 查看
题目:
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.
思路:
给定一个数组a,和一个整数k,题意是判断一个数组里面,有没有重复的两个元素,坐标是i和j,且i和j只差大于等于k。考虑用hashMap
代码:
public class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { if(nums==null || nums.length<2) return false; //key=int, val=index Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for(int i=0; i<nums.length; i++) { if(map.containsKey(nums[i])) { int j = map.get(nums[i]); if(i-j<=k) {return true; }else{ map.remove(j); map.put(nums[i], i); } } else { map.put(nums[i], i); } } return false; } }
相关文章推荐
- 只有程序员看的懂的面试圣经|如何拿下编程面试
- 下一次技术面试时要问的 3 个重要问题
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- PHP程序员面试 切忌急功近利(更需要注重以后的发展)
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- INSERT INTO .. ON DUPLICATE KEY更新多行记录
- mysql #1062 –Duplicate entry '1' for key 'PRIMARY'
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法