217. chứa python trùng lặp

Nội dung

  • Vấn đề LeetCode
  • Giải pháp
    • Giải pháp C#
    • Giải pháp Java
    • Giải pháp Python3
    • Giải pháp JavaScript
  • Chi tiết nộp
    • C#
    • Java
    • Python3
    • JavaScript
  • Phần kết luận

Vấn đề LeetCode

Cho một mảng số nguyên nums, trả về true nếu bất kỳ giá trị nào xuất hiện ít nhất hai lần trong mảng và trả về false nếu mọi phần tử đều khác biệt

217. chứa python trùng lặp

Giải pháp

Bài này là tìm xem trong mảng có phần tử nào trùng nhau không, có vẻ dễ lắm, thử xem nào

Giải pháp C#

❌Solution1 – IndexOf (Không được đề xuất – quá chậm)

Trong lần thử đầu tiên của chúng tôi, hãy sử dụng phép lặp đơn giản và sử dụng 【Array. Chức năng IndexOf】

Nếu nó trả về bất kỳ chỉ mục nào (không tìm thấy sẽ trả về -1), thì trả về true (có phần tử trùng lặp trong mảng)

public class Solution {
    public bool ContainsDuplicate(int[] nums) {
        for(int i = 0;i

thời gian chạy. 889ms、1045ms、980ms ≈ Nhanh hơn 10~15% …

Thời gian phức tạp. O(n2) ➡ Mảng. IndexOf ≈ O(n) * Đối với phép lặp O(n)

⭐Giải pháp2 – HashSet

public class Solution {
    public bool ContainsDuplicate(int[] nums) {
        HashSet hSet = new HashSet();
        
        for(int i = 0;i

thời gian chạy. 197ms、244ms、187ms ≈ Nhanh hơn 70~90%

Thời gian phức tạp. O(n) ➡ Bộ băm. Chứa ≈ O(1) * Đối với phép lặp O(n)

Giải pháp3

Có một giải pháp khác là sử dụng 【Array. Sort】hàm để sắp xếp các số

Sau đó, chúng ta có thể kiểm tra mảng bằng cách lặp lại, nếu bất kỳ phần tử nào giống với giá trị chỉ mục tiếp theo, chúng ta có thể biết có phần tử trùng lặp

public class Solution {
    public bool ContainsDuplicate(int[] nums) {
        Array.Sort(nums);
        
        for(int i = 0;i

thời gian chạy. 294ms、283ms、311ms

Giải pháp Java

⭐Giải pháp1 – HashSet

class Solution {
    public boolean containsDuplicate(int[] nums) {
        HashSet hSet = new HashSet();
        
        for(int i = 0;i

thời gian chạy. 9ms、6ms、11ms

Giải pháp 2 – Mảng. loại

class Solution {
    public boolean containsDuplicate(int[] nums) {
        Arrays.sort(nums);
        
        for(int i = 0;i

thời gian chạy. 28ms、24ms、30ms ≈ Nhanh hơn 15~25%

Giải pháp Python3

Giải pháp1 – đặt

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        s = set()
        
        for i in range(len(nums)):
            if(nums[i] in s):
                return True
            s.add(nums[i])
            
        return False

thời gian chạy. 510ms、487ms、455ms

Giải pháp1. 1 – Từ điển có thể đạt được hiệu quả tương tự

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        d = {}  #dict
        
        for i in range(len(nums)):
            if(nums[i] in d):
                return True
            d[nums[i]] = 0
            
        return False

Giải pháp 2 – sắp xếp danh sách trước

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        nums.sort()
        
        for i in range(len(nums)-1):
            if(nums[i] == nums[i+1]):
                return True
            
        return False

thời gian chạy. 760ms、959ms、654ms

Giải pháp JavaScript

Giải pháp1 – đặt

________số 8

thời gian chạy. 73ms、116ms、114ms

Giải pháp 2 – sắp xếp danh sách trước

/**
 * @param {number[]} nums
 * @return {boolean}
 */
var containsDuplicate = function(nums) {
    nums.sort();
    for(var i=0; i

Chi tiết nộp

C#

217. chứa python trùng lặp

Java

217. chứa python trùng lặp

Python3

217. chứa python trùng lặp

JavaScript

217. chứa python trùng lặp

Phần kết luận

🧡Nếu giải pháp của tôi hữu ích, đó là vinh dự của tôi

🧡Các bạn có thể ủng hộ mình bằng cách click quảng cáo nhé, Thanks nhiều

✅Nếu bạn có bất kỳ vấn đề gì về giải thích hoặc bạn cần giải pháp ngôn ngữ lập trình khác, vui lòng cho tôi biết (để lại nhận xét hoặc liên hệ với tôi qua Messenger đều được. )