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 jis at most k.

这题上上一篇博客的延伸,问的是k长的距离内有没有两个数是相等的,类似一个滑动窗口问题,方法比较简单,使用一个map记下上次数出现的位置就可以了,代码如下:

 class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
map<int, int> ret;
int sz = nums.size();
for (int i = ; i < sz; ++i){
if (ret.find(nums[i]) != ret.end() && i - ret[nums[i]] <= k)
return true;
else
ret[nums[i]] = i;
}
return false;
}
};

java版本的代码如下所示,用的方法都是一样的:

  public class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
HashMap<Integer, Integer> m = new HashMap<Integer, Integer>();
for(int i = 0; i < nums.length; ++i){
if(m.containsKey(nums[i]))
if(i-m.get(nums[i]) <= k)
return true;
m.put(nums[i], i);//放在这里有两个原因,如果本来存在将index更新到最近的位置,如果不存在就将它放到map中起
}
return false;
}
}

最新文章

  1. spring 官方下载地址(Spring Framework 3.2.x&amp;Spring Framework 4.0.x)
  2. python中raw_input() 与 input()
  3. List对象分组排序算法
  4. 【转】TCP协议中的三次握手和四次挥手(图解)
  5. 转:CSS布局:Float布局过程与老生常谈的三栏布局
  6. [转载]Linux LVM硬盘管理及LVM扩容
  7. centos5.5用phpstudy一键安装配置虚拟主机后,yum配置代理服务器squid
  8. Week11(11月18日)
  9. android 去除标题
  10. 探索Android该Parcel机制(上)
  11. struts.xml在Action配置具体解释
  12. 自己动手用maven构建基于SSI的java EE应用
  13. Redis【第一篇】安装
  14. 让 IE支持圆角的方法
  15. Cs231n课堂内容记录-Lecture 5 卷积神经网络介绍
  16. infinite-loading 插件
  17. ASP.NET MVC HtmlHelper 类的扩展方法
  18. .NET Core2.0 使用EF做数据操作
  19. HDU 2521 反素数 模拟题
  20. Spring源码解析(三)BeanDefinition的载入、解析和注册

热门文章

  1. iOS 关于自动更新的分阶段发布(灰度发布)的相关简介
  2. css系列(6)css的运用(二)
  3. Linux Shell基础 read命令
  4. Linux Shell基础 管道符和grep命令
  5. 纯CSS3动画按钮效果
  6. HISAT2的运用
  7. PHP 面向对象及Mediawiki 框架分析(二)
  8. INSPIRED启示录 读书笔记 - 第18章 重新定义产品说明文档
  9. servlet原理分析
  10. each方法的简单使用