程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> LeetCode 219 Contains Duplicate II(包含重復數字2)(*)

LeetCode 219 Contains Duplicate II(包含重復數字2)(*)

編輯:關於C++

翻譯

給定一個整型數組和一個整型數K,

找出是否存在兩個不同的索引i和j,使得nums[i] = nums[j],

並且它們之間的距離最大為K。

原文

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 j is at most k.

分析

這裡有一道非常相似的題目,大家可以去瞅瞅。

LeetCode 217 Contains Duplicate(包含重復數字)(Vector、hash)

本題也類似,使用unordered_map作存儲,遍歷數組所有整型數。

如果表中不存在則添加該數字的索引,否則計算找到的索引與此前記錄索引的記錄,是否小於等於K。

bool containsNearbyDuplicate(vector& nums, int k) {
    unordered_map map;
    for (int i = 0; i < nums.size(); ++i) {
        if (map.find(nums[i]) != map.end() && i - map[nums[i]] <= k)    return true;
        else map[nums[i]] = i;    
    }
    return false;
}   
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved