Leetcode219

Leetcode219:存在重复元素 II

题目描述

Leetcode219: 存在重复元素 II
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,
使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。

 示例 1:

 输入: nums = [1,2,3,1], k = 3
 输出: true
 示例 2:

 输入: nums = [1,0,1,1], k = 1
 输出: true
 示例 3:

 输入: nums = [1,2,3,1,2,3], k = 2
 输出: false

解法一:基于map的判断

/*****************************************
基于map的判断
用map存放值到索引的哈希表,
然后一一查找map中是否有相同的值,
若有则判断索引差是否小于等于k,
不是则修改map中的索引值。
******************************************/
class Solution {
public:
    bool containsNearbyDuplicate(vector<int>& nums, int k) {
        if (nums.size()<2) return false;
        map<int, int> a;
        for (int i = 0; i<nums.size(); i++)
        {
            if (a.count(nums[i]))
            {
                if (i - a[nums[i]] <= k)
                    return true;
                else a[nums[i]] = i;
            }
            else a.insert(map<int, int>::value_type(nums[i], i));
        }
        return false;
    }
};

   转载规则


《Leetcode219》 赵小亮 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Leetcode167 Leetcode167
Leetcode167:两数之和 II - 输入有序数组 题目描述给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 inde
2020-04-21
下一篇 
Leetcode53-1 Leetcode53-1
Leetcode53-1:在排序数组中查找数字 I 题目描述       统计一个数字在排序数组中出现的次数。 示例 1: 输入: nums = [5,7,7,8,8,10], target =
2020-04-20
  目录