zoukankan      html  css  js  c++  java
  • LeetCode题解之Contains Duplicate II

    1、题目描述

    2、题目分析

    使用哈希表 和分情况讨论的方法

    3、代码

    bool containsNearbyDuplicate(vector<int>& nums, int k) {
            
            if( nums.size() == 0 ){
                return false;
            }
            
            if( k >= nums.size() ){
                map<int,int> m;
                for( auto n: nums){
                    m[n]++;
                    if(m[n] > 1){
                        return true;
                    }
                }
                return false;
            }
            
            map<int,int>m;
            for( int i = 0; i < nums.size() - k +1; i++){
                if( i == 0){
                    for(int j = i; j <= k; j++){
                        m[nums[j]]++;
                        if(m[nums[i+k]] > 1)
                            return true;
                    }
                }else{
                    if( m[nums[i-1]] <= 1){
                        m.erase(nums[i-1]);
                    }else {
                        m[nums[i-1]]--;
                    }
                    if( i+k < nums.size() ){
                        m[nums[i+k]]++;
                        if(m[nums[i+k]] > 1)
                            return true;
                    } 
                }
                
            }
            
            return false;
            
        }
    pp
  • 相关阅读:
    输出三角行
    练习
    循环
    阶乘
    常量、变量、数据类型 搞错N+1次 累死
    UTF-8
    数据库事务
    Jsp的使用
    Cookie和Session
    请求转发和重定向
  • 原文地址:https://www.cnblogs.com/wangxiaoyong/p/9546971.html
Copyright © 2011-2022 走看看