力扣簡219 存在重複元素2
阿新 • • 發佈:2022-05-30
自己寫的 用了map
package leetcode01; import java.util.HashMap; import java.util.Map; //我無語 看不清題目咱就是 人說的是小於等於 不是等於! /*給你一個整數陣列nums和一個整數k,判斷陣列中是否存在兩個不同的索引i和j, 滿足 nums[i]==nums[j]且 abs(i-j)<=k。如果存在,返回 true;否則,返回 false。 */ public class Solution219 { public static boolean containsNearbyDuplicate(int[] nums, intk) { Map<Integer, Integer> map=new HashMap<Integer, Integer>(); for(int i=0;i<nums.length;i++) { if(map.containsKey(nums[i])) { if(Math.abs(i-map.get(nums[i]))<=k) { return true; } map.replace(nums[i], i); } map.put(nums[i], i); }return false; } public static void main(String[] args) { // TODO Auto-generated method stub int[] nums= {1,2,3,4,1,5}; System.out.print(containsNearbyDuplicate(nums,4)); } }
看了題解:滑動視窗:
public static 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; }