219. Contains Duplicate II

LeetCode easy original: C# #array #csharp #easy #hash-table #leetcode
Văn bản bài toán được dịch từ tiếng Nga theo ngôn ngữ giao diện. Mã không thay đổi.

Дан mảng целых чисел nums и số nguyên k. return true, если в mảngе существуют два различных индекса i и j, такие что nums[i] == nums[j] и abs(i - j) <= k.

Ví dụ:

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

Output: false

C# lời giải

đã khớp/gốc
public class Solution {
    public bool ContainsNearbyDuplicate(int[] nums, int k) {
        HashSet<int> set = new HashSet<int>();
        for (int i = 0; i < nums.Length; ++i) {
            if (set.Contains(nums[i])) return true;
            set.Add(nums[i]);
            if (set.Count > k) set.Remove(nums[i - k]);
        }
        return false;
    }
}

C++ lời giải

bản nháp tự động, xem lại trước khi gửi
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    public bool ContainsNearbyDuplicate(vector<int>& nums, int k) {
        HashSet<int> set = new HashSet<int>();
        for (int i = 0; i < nums.size(); ++i) {
            if (set.Contains(nums[i])) return true;
            set.push_back(nums[i]);
            if (set.size() > k) set.Remove(nums[i - k]);
        }
        return false;
    }
}

Java lời giải

đã khớp/gốc
public boolean containsNearbyDuplicate(int[] nums, int k) {
    Set<Integer> set = new HashSet<>();
    for (int i = 0; i < nums.length; ++i) {
        if (set.contains(nums[i])) return true;
        set.add(nums[i]);
        if (set.size() > k) {
            set.remove(nums[i - k]);
        }
    }
    return false;
}

JavaScript lời giải

đã khớp/gốc
var containsNearbyDuplicate = function(nums, k) {
    let set = new Set();
    for (let i = 0; i < nums.length; ++i) {
        if (set.has(nums[i])) return true;
        set.add(nums[i]);
        if (set.size > k) set.delete(nums[i - k]);
    }
    return false;
};

Python lời giải

đã khớp/gốc
class Solution:
    def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
        seen = set()
        for i, num in enumerate(nums):
            if num in seen:
                return True
            seen.add(num)
            if len(seen) > k:
                seen.remove(nums[i - k])
        return False

Go lời giải

đã khớp/gốc
func containsNearbyDuplicate(nums []int, k int) bool {
    set := make(map[int]struct{})
    for i, num := range nums {
        if _, exists := set[num]; exists {
            return true
        }
        set[num] = struct{}{}
        if len(set) > k {
            delete(set, nums[i-k])
        }
    }
    return false
}

Algorithm

1️⃣

Создайте пустое множество set.

2️⃣

Пройдитесь по mảngу nums:

Если текущий element уже есть в множестве, return true.

Добавьте текущий element в множество.

Если размер множества больше k, удалите element, который был добавлен k шагов назад.

3️⃣

Если не найдены дублирующиеся elementы на расстоянии k или менее, return false.

😎

Vacancies for this task

việc làm đang hoạt động with overlapping task tags are đã hiển thị.

Tất cả việc làm
Chưa có việc làm đang hoạt động.