zoukankan      html  css  js  c++  java
  • [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 absolute difference between i and j is at most k.

    按照题意使用两层for循环进行判断。结果超时了。附上超时代码,便于理解题意。

    class Solution {
    public:
        bool containsNearbyDuplicate(vector<int>& nums, int k) {
            int n = nums.size();
            if (n < 2 || k <= 0)
                return false;
            for (int i = 0; i < n; i++) {
                for (int j = i + 1; j <= i + k && j < n; j++) {
                    if (nums[i] == nums[j])
                        return true;
                }
            }
            return false;
        }
    };
    // TLE
    TLE

    使用map来存储元素值与索引之间的关系,键:元素值,值:索引值。
    遍历数组中的每一个元素,如果可以找到map中元素,判断map中元素与此时数组元素索引之差是否小于等于k。

    class Solution {
    public:
        bool containsNearbyDuplicate(vector<int>& nums, int k) {
            int n = nums.size();
            if (n < 2 || k <= 0)
                return false;
            unordered_map<int, int> m;
            for (int i = 0; i < n; i++) {
                if (m.count(nums[i]) != 0 && i - m[nums[i]] <= k)
                    return true;
                else
                    m[nums[i]] = i;
            }
            return false;
        }
    };
    // 22 ms
  • 相关阅读:
    倒计时2(小于0时的格式)
    日期 Date()
    倒计时5(超过时间为0:0:0)
    倒计时4
    倒计时3
    Lucene_solr
    Solr与tomcat搭建(搭建好)
    SSM(Spring-SpringMvc-Mybatis)练习
    SpringMvc
    Mybatis(使用)与Spring整合
  • 原文地址:https://www.cnblogs.com/immjc/p/7797706.html
Copyright © 2011-2022 走看看