1. 程式人生 > >每天一道LeetCode-----判斷陣列中是否存在兩個位置上面的值相等並且下標的差小於某個值

每天一道LeetCode-----判斷陣列中是否存在兩個位置上面的值相等並且下標的差小於某個值

判斷給定陣列中是否存在i和j,使得nums[i] == nums[j]並且j - i <= k

只需要儲存每個數最後出現的下標,當再次遇到這個數時,進行比較,如果滿足條件則返回,否則更新下標

實現程式碼如下

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