LeetCode 219:Contains Duplicate II

2019-08-28 18:15栏目:编程学习

LeetCode 219:Contains Duplicate II

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]威尼斯人app, and the difference between i and jis at most k.

 

 //给出一个整数数组,判断该数组内是否有两个元素值是相同的,且他们的索引值相差不大于k,是则返回true,否则返回false
 class Solution {
 public:
  bool containsNearbyDuplicate(vector& nums, int k) {
   map buf;
   int n = nums.size();
   for (int i = 0; i < n; i  )
   {
    if (buf.find(nums[i]) != buf.end() && i - buf[nums[i]] <= k)
    {
     return true;
    }
    else
    {
     buf[nums[i]] = i;
    }
   }

   return false;
  }
 };

威尼斯人app 1

 

219:Contains Duplicate II 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...

LeetCode -- Contains Duplicate II

题目描述:
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.

在一个数组nums中试着找到两个数nums[i]和nums[j],其中,i与j的距离要小于等于k。如果找到,返回true,否则返回false。

思路:

一次遍历num[i...n),哈希存每个数的位置,如果nums[i]已经出现,就判断上次出现的位置与当前位置的距离是否小于等于k。如果是,返回true;否则,更新Hash[nums[i]]的位置=i。

实现代码:

public class Solution {
    public bool ContainsNearbyDuplicate(int[] nums, int k) 
    {
        var hash = new Dictionary();
     for(var i = 0;i < nums.Length; i  ){
      if(!hash.ContainsKey(nums[i])){
       hash.Add(nums[i],i);
      }
      else{
       if(Math.Abs(hash[nums[i]] - i) <= k){
        return true;
       }
       else{
        hash[nums[i]] = i;
       }
      }
     }

     return false;
    }
}

-- Contains Duplicate II 题目描述: 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...

版权声明:本文由威尼斯人app发布于编程学习,转载请注明出处:LeetCode 219:Contains Duplicate II