博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
219. Contains Duplicate II
阅读量:2351 次
发布时间:2019-05-10

本文共 1318 字,大约阅读时间需要 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 absolute difference between i and j is at most k.

Example 1:

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

Output: true

注意步长为零的情况

我的想法

双指针

class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
int i = 0, j = 0; while(i < nums.length-1){
if(j - i == k || j == nums.length-1) {
j = ++i; continue;} j++; if(nums[i] == nums[j]) return true; } return false; }}

HashSet

class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
int i = 0; Set
set = new HashSet<>(); while(i < nums.length){
if(set.contains(nums[i])) return true; else set.add(nums[i]); if(set.size() == k+1) set.remove(nums[i-k]); i++; } return false; }}

解答

HashSet的add方法是先判断set是否含有元素,可以简化solution2的步骤

public boolean containsNearbyDuplicate(int[] nums, int k) {
Set
set = new HashSet
(); 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; }

转载地址:http://ybqvb.baihongyu.com/

你可能感兴趣的文章
Stackla前端团队Leader蒋定宇:国外前端开发者的别样人生
查看>>
从产品、技术到投资 微信小程序的全面解读
查看>>
年终技术盛会筹备中 SDCC 2016正公开征集演讲嘉宾
查看>>
【MDCC 2016】硬件产品开发峰会:硬件创业、创新之道深入探索
查看>>
【MDCC 2016】物联网开发专场:物联网落地实践探索
查看>>
58到家周俊鹏:webpack PK fis,实现前端工程化我更喜欢前者
查看>>
企业号、企业微信、企业邮箱三者融合,IBOS微信生态掘金之路
查看>>
360奇舞团钟恒:选用Vue.js进行组件化开发,我们遇到了哪些坑?
查看>>
【BDTC2016】大数据分析与生态系统论坛:大数据存储、处理技术大比评 百花齐放落地实践大展现
查看>>
2017微信公开课PRO版在广州召开 张小龙首次全面解读小程序
查看>>
微信小程序催生新的创业机会 阿拉丁为首批乘风破浪者
查看>>
这里有海量的用户群 CSDN学院诚邀微信小程序技术课程优秀讲师
查看>>
测试用例设计方法例子
查看>>
交叉表 设计测试用例
查看>>
软件测试方法及测试用例的设计方法
查看>>
软件测试面试题集锦
查看>>
写给测试人员:不是所有的bug都需要修复
查看>>
测试人员如何赢得开发人员的尊重
查看>>
浅谈测试Web程序的几大要点
查看>>
一个软件如何确定测试结束点
查看>>