博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode OJ:Contains DuplicateII(是否包含重复II)
阅读量:6698 次
发布时间:2019-06-25

本文共 1248 字,大约阅读时间需要 4 分钟。

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记下上次数出现的位置就可以了,代码如下:

1 class Solution { 2 public: 3     bool containsNearbyDuplicate(vector
& nums, int k) { 4 map
ret; 5 int sz = nums.size(); 6 for (int i = 0; i < sz; ++i){ 7 if (ret.find(nums[i]) != ret.end() && i - ret[nums[i]] <= k) 8 return true; 9 else10 ret[nums[i]] = i;11 }12 return false;13 }14 };

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

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

 

转载于:https://www.cnblogs.com/-wang-cheng/p/4887494.html

你可能感兴趣的文章
分布式系统的开发经验与心得
查看>>
Apple着手抛弃32位macOS应用程序
查看>>
使用postman测试接口
查看>>
创建型模式二:工厂方法模式
查看>>
Linux-MySQL基本命令-SQL语句
查看>>
别的AI还在打游戏,这个AI已经当上“超级马里奥”游戏策划了|GECCO最佳论文
查看>>
StringBuffer与StringBuilder
查看>>
Kinect2.0-空间长度测量
查看>>
hibernate连接数据库配置
查看>>
MySQL的timestamp字段可以使用的范围是多少
查看>>
mysqldump 使用备忘
查看>>
vue新手入门——vue-cli搭建
查看>>
基础、语法都不是最重要的,学Python最重要的是什么?编程思路!
查看>>
UPS开始尝试“货车+无人机”的投递方式,不必再担心快递员离职了
查看>>
前端入门教程(七)CSS属性设置
查看>>
我所知道的Promise
查看>>
20180601]函数与标量子查询2.txt
查看>>
交换2个数值的方法
查看>>
“docker-app”实用工具分享,大大提高 Compose 文件复用率
查看>>
位置参数及操作符号
查看>>