zoukankan      html  css  js  c++  java
  • 219.Contains Duplicate II

    给定一个数组,以及一个整数k,判断数组中,是否存在相同的2个数,且这两个数的距离不超过k。
    Input: nums = [1,2,3,1], k = 3
    Output: true

    Input: nums = [1,2,3,1,2,3], k = 2
    Output: false

    思路:
    一:暴力搜索,提交OJ,显示运行超时

    bool containsNearbyDuplicate(vector<int>& nums, int k) {
        for (int i = 0; i < nums.size(); i++) {
            for (int j = 1; j <= k && (i+j) < nums.size(); j++) {
                if (nums[i] == nums[i + j]) return true;
            }
        }
        return false;
    }

    二、运用哈希字典保存数组中的元素,key = nums[ i] , value = i. 当哈希字典中存在元素时,用现在的i-nums[i]得到两个下标的差,判断其是否小于等于k,提交OJ,能AC。

    bool containsNearbyDuplicate(vector<int>& nums, int k) {
        unordered_map<int, int> map;
        for (int i = 0; i < nums.size(); i++) {
            if (map.count(nums[i]) && i - map[nums[i]] <= k) return true;
            map[nums[i]] = i;
        }
        return false;
    }

     Java 版:

    class Solution {
        public boolean containsNearbyDuplicate(int[] nums, int k) {
                int n = nums.length;
                if(n <= 1) return false;
                Map<Integer,Integer> map = new HashMap<>();
                for(int i = 0; i < n; i++){
                    if(map.containsKey(nums[i])){
                        if(i - map.get(nums[i]) <= k) return true;
                        else map.put(nums[i] , i);
                    }
                    else map.put(nums[i], i);
                }
                return false;
        }
    }
  • 相关阅读:
    16. Vue 登录存储
    JS 10位、13位时间戳转日期
    14.Vue 定义全局函数
    13.Vue+Element UI实现复制内容
    12.Vue+Element UI 获取input的值
    11.Vue安装Axios及使用
    Layui入手
    MongoDB自启动设置
    sql数据统计
    sql查询总结
  • 原文地址:https://www.cnblogs.com/luo-c/p/12871199.html
Copyright © 2011-2022 走看看