作者: 负雪明烛
id: fuxuemingzhu
个人博客: http://fuxuemingzhu.cn/


题目地址:https://leetcode.com/problems/contains-duplicate-ii/description/

题目描述

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 absolute difference between i and j is at most k.

Example 1:

Input: nums = [1,2,3,1], k = 3
Output: true

Example 2:

Input: nums = [1,0,1,1], k = 1
Output: true

Example 3:

Input: nums = [1,2,3,1,2,3], k = 2
Output: false

题目大意

在一个数组中是否存在两个数字相等,并且他们的间距最多为k.

解题方法

使用set

想法是用一个set来保存已经出现过的数据,然后只用遍历一次数组,把每个数放到set里,因为步长最多是k,所以,如果i超过k就删除最早放到set里的元素。set添加元素的时候,如果已经包含了该元素,那么add方法会返回false.

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;
}
}

使用字典

更通用的方法是使用一个字典,保存每个数字出现的位置,如果在K以内,说明满足要求的,否则就更新这个位置。

class Solution(object):
def containsNearbyDuplicate(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: bool
"""
d = dict()
for i, num in enumerate(nums):
if num in d:
if i - d[num] <= k:
return True
d[num] = i
return False

日期

2017 年 8 月 18 日
2018 年 11 月 24 日 —— 周六快乐

最新文章

  1. 激活windows7 企业版小记
  2. os and shutil
  3. autofac 注入中i遇到的泛型传参问题
  4. open-flash-chart2
  5. php对象引用和析构函数的关系
  6. 支持向量机(SVM)简介
  7. Linux 的多线程编程的高效开发经验(转)
  8. 调整ListBox控件的行间距及设置文本格式
  9. [转载]opencv MSER
  10. corejava-chap01
  11. .net软件工程师面试题(参考答案)
  12. 王立平-- ContentValues , HashTable , HashMap差别
  13. 基于 Vue.js 的移动端组件库mint-ui实现无限滚动加载更多
  14. 【知了堂学习笔记】_String、StringBuffer与StringBuilder的区别
  15. jsencrypt参数前端加密c#解密
  16. qt手写输入法资料
  17. windows知识点2
  18. Excel根据字符串截取单元格部分内容
  19. .Net core使用EF Core Migration做数据库升级
  20. CentOS6开启BBR加速

热门文章

  1. PPT插件——iSlide全功能解析
  2. 关于vim复制剪贴粘贴命令的总结-转
  3. c#表中信息点击跳转
  4. HDFS04 HDFS的读写流程
  5. 日常Java 2021/10/19
  6. 【原创】Altium生成Gerber时跳出The Film is too small for this PCB的解决办法
  7. vue-cli安装记录
  8. JS - 获取当前的时间,并且转换成年 - 月 - 日格式!
  9. 统计图—柱状图可视化(python)
  10. PMP过程组与知识领域