leetcode Contains Duplicate II

Contains Duplicate II  重复索引在指定的长度  

解题思路:

1.新建一个map,键---值 键是元素  值是元素最近一次出现的索引。

2.当前元素第一次出现put进map,如果是第二次出现,判断索引与第一次出现的索引是否在指定的范围內,在直接返回true,不在更新索引位置。

public static void main(String[] args) {
		int[] arr={1,2,3,1,2,3};
		int k=2;
		boolean flag = containsNearbyDuplicate(arr, k);
		System.out.println(flag);
	}

	public static boolean containsNearbyDuplicate(int[] nums, int k) {
		Map<Integer,Integer> map=new HashMap<>();

		for(int i=0;i<nums.length;i++){
			if(!map.containsKey(nums[i])){
				map.put(nums[i],i);
			}else{
				Integer j = map.get(nums[i]);
				if(i-j<= k){
					return true;
				}
				//更新nums[i]的索引
				map.put(nums[i],i);
			}

		}
		return false;
	}

猜你喜欢

转载自blog.csdn.net/u011243684/article/details/84870217