Contains Duplicate II

来源:互联网 发布:时间轴源码 编辑:程序博客网 时间:2024/06/06 21:01

1 题目描述

Given an array of integers and an integer k, find out whether there there are two distinct indices i and j in the array such that nums[i] = nums[j] and the difference between iand j is at most k.

题目出处:https://leetcode.com/problems/contains-duplicate-ii/

2 解题思路

1.题意:在|i - j| <= k的条件下,判断是否存在nums[i] = nums[j]。

2采取的方法是:设置起始和结束标记:start与end。对于每个元素,如果在前k个元素中有,则退出;如果没有则加入,并调整start与end。


3 源代码

package com.larry.easy;import java.util.HashSet;public class ContainsDuplicateII {public boolean containsNearbyDuplicate(int[] nums, int k) {HashSet<Integer> hs = new HashSet<Integer>();int start = 0, end = 0;for(int i = 0; i < nums.length; i++){boolean conts = hs.contains(nums[i]);if(conts) return true;else{hs.add(nums[i]);end++;if(end - start > k) {hs.remove(nums[start]);start++;}}}        return false;    }}


0 0