zoukankan      html  css  js  c++  java
  • LeetCode OJ:Contains DuplicateII(是否包含重复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 jis at most k.

    这题上上一篇博客的延伸,问的是k长的距离内有没有两个数是相等的,类似一个滑动窗口问题,方法比较简单,使用一个map记下上次数出现的位置就可以了,代码如下:

     1 class Solution {
     2 public:
     3     bool containsNearbyDuplicate(vector<int>& nums, int k) {
     4         map<int, int> ret;
     5         int sz = nums.size();
     6         for (int i = 0; i < sz; ++i){
     7             if (ret.find(nums[i]) != ret.end() && i - ret[nums[i]] <= k)
     8                 return true;
     9             else
    10                 ret[nums[i]] = i;
    11         }
    12         return false;
    13     }
    14 };

    java版本的代码如下所示,用的方法都是一样的:

     1  public class Solution {
     2     public boolean containsNearbyDuplicate(int[] nums, int k) {
     3         HashMap<Integer, Integer> m = new HashMap<Integer, Integer>();
     4         for(int i = 0; i < nums.length; ++i){
     5             if(m.containsKey(nums[i]))
     6                 if(i-m.get(nums[i]) <= k)
     7                     return true;
     8                 m.put(nums[i], i);//放在这里有两个原因,如果本来存在将index更新到最近的位置,如果不存在就将它放到map中起
     9         }
    10         return false;        
    11     }
    12 }
  • 相关阅读:
    phpcms列表页内容如何替换?
    如何用phpcms将静态网页生成动态网页?
    简单介绍phpcms以及phpcms如何安装?
    注册账号的验证
    js跳转页面
    流程审核处理
    关于XML(可扩展标记语言)的基础知识与写法
    php随机获取验证码
    流程管理
    HDU 5894 hannnnah_j’s Biological Test
  • 原文地址:https://www.cnblogs.com/-wang-cheng/p/4887494.html
Copyright © 2011-2022 走看看