首页 > 其他 > 详细

Leetcode: Contains Duplicate II

时间:2015-12-17 08:12:41      阅读:212      评论:0      收藏:0      [点我收藏+]
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 difference between i and j is at most k.

HashMap:

 1 public class Solution {
 2     public boolean containsNearbyDuplicate(int[] nums, int k) {
 3         if (nums==null || nums.length==0) return false;
 4         HashMap<Integer, ArrayList<Integer>> map = new HashMap<Integer, ArrayList<Integer>>();
 5         for (int i=0; i<nums.length; i++) {
 6             if (!map.containsKey(nums[i])) {
 7                 ArrayList<Integer> list = new ArrayList<Integer>();
 8                 list.add(i);
 9                 map.put(nums[i], list);
10             }
11             else {
12                 ArrayList<Integer> list = map.get(nums[i]);
13                 for (int index : list) {
14                     if (Math.abs(index-i) <= k) return true;
15                 }
16                 list.add(i);
17             }
18         }
19         return false;
20     }
21 }

 

Leetcode: Contains Duplicate II

原文:http://www.cnblogs.com/EdwardLiu/p/5052896.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!