Làm thế nào để bạn tìm thấy các phần tử trùng lặp trong một mảng python?

Viết chương trình Python để tìm phần tử trùng lặp đầu tiên trong một mảng các số nguyên đã cho. Trả về -1 Nếu không có phần tử nào như vậy

Giải pháp mẫu

Mã Python

def find_first_duplicate[nums]:
    num_set = set[]
    no_duplicate = -1

    for i in range[len[nums]]:

        if nums[i] in num_set:
            return nums[i]
        else:
            num_set.add[nums[i]]

    return no_duplicate

print[find_first_duplicate[[1, 2, 3, 4, 4, 5]]]
print[find_first_duplicate[[1, 2, 3, 4]]]
print[find_first_duplicate[[1, 1, 2, 3, 3, 2, 2]]]

Đầu ra mẫu

4
-1
1

Trình chỉnh sửa mã Python

Đóng góp mã và nhận xét của bạn thông qua Disqus

Trước. Viết chương trình Python để tìm xem một mảng số nguyên đã cho có chứa bất kỳ phần tử trùng lặp nào không. 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 đã nói và trả về false nếu mọi phần tử đều khác biệt.
Tiếp theo. Viết chương trình Python để kiểm tra xem nó có tuân theo trình tự được đưa ra trong mảng mẫu không.

Mức độ khó của bài tập này là gì?

Dễ dàng trung bình khó

Kiểm tra kỹ năng Lập trình của bạn với bài kiểm tra của w3resource



con trăn. Lời khuyên trong ngày

Chuỗi và bộ dữ liệu là bất biến

Điều này đã được đề cập ở điểm trước nhưng muốn nhấn mạnh nó vì điều này khá quan trọng

Khi được yêu cầu in các phần tử trùng lặp của một mảng, các phần tử danh sách được lặp lại và một vòng lặp lồng nhau được sử dụng

Dưới đây là một minh chứng tương tự -

Ví dụ

Bản thử trực tiếp

my_list = [1, 2, 5, 6, 8, 9, 3, 4, 8, 9, 1, 8]
print["The list is :"]
print[my_list]
print["The duplicate elements in the list are : "]
for i in range[0, len[my_list]]:
   for j in range[i+1, len[my_list]]:
      if[my_list[i] == my_list[j]]:
         print[my_list[j]]

đầu ra

The list is :
[1, 2, 5, 6, 8, 9, 3, 4, 8, 9, 1, 8]
The duplicate elements in the list are :
1
8
8
9
8

Giải trình

  • Một danh sách được xác định và các phần tử được hiển thị trên bảng điều khiển

  • Danh sách được lặp đi lặp lại hai lần và các phần tử của vị trí đồng thời đầu tiên và tiếp theo được so sánh

    Trong ví dụ này, chúng ta sẽ thấy một chương trình Python sử dụng để in tất cả các phần tử trùng lặp của một mảng đã cho. Điều này có thể được thực hiện thông qua hai vòng lặp. Vòng lặp đầu tiên sẽ chọn một phần tử và vòng lặp thứ hai sẽ lặp qua tất cả các mảng bằng cách so sánh phần tử được chọn với các phần tử khác. Nếu tìm thấy kết quả trùng khớp thì nó sẽ in phần tử trùng lặp

    Ví dụ.
    
    #Initialize array     
    arr = [1, 2, 3, 4, 2, 7, 8, 3, 7, 5, 1, 8];     
    print["Duplicate elements in given array: "];    
    #Searches for duplicate element    
    for i in range[0, len[arr]]:    
    for j in range[i+1, len[arr]]:    
    if[arr[i] == arr[j]]:    
    print[arr[j]];    
    
    

    Đầu ra.
    Sao chép các phần tử trong mảng đã cho.
    1
    2
    3
    7
    8

    Mã Python

    Chạy

    def find[array]:
        # Declare an array which will store all the duplicate elements
        duplicate_element_array = []
    
        # Iterate on the elements of array to find duplicate elements
        for i in array:
            if array.count[i] > 1 and i not in duplicate_element_array:
                duplicate_element_array.append[i]
    
        # Print all duplicate elements
        print["Duplicate element in an array : ", end=""]
        for i in sorted[duplicate_element_array]:
            print[i, end=" "]
    
    
    # declare array
    array = [-1, 8, 1, 8, -1, 5, 1, -3]
    
    # print[array]
    print["Array= ", array]
    find[array]
    

    đầu ra

    Array= [-1, 8, 1, 8, -1, 5, 1, -3]
    Duplicate element in an array : -1 1 8

    Trong bài viết này, chúng ta sẽ thảo luận về các cách khác nhau để kiểm tra xem một danh sách có chứa bất kỳ phần tử trùng lặp nào hay không.

    Giả sử chúng ta có một danh sách các phần tử i. e

    listOfElems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test']

    Bây giờ chúng ta muốn kiểm tra xem danh sách này có chứa phần tử nào trùng lặp hay không. Có một số cách để làm điều này, nhưng ở đây chúng tôi sẽ thảo luận về 3 cách và cũng sẽ phân tích hiệu suất ở đó.

    Kiểm tra các mục trùng lặp trong danh sách bằng cách sử dụng Set & bằng cách so sánh các kích thước

    Để kiểm tra xem một danh sách có chứa bất kỳ phần tử trùng lặp nào hay không, hãy làm theo các bước sau,

    1. Thêm nội dung của danh sách trong một tập hợp
      • Vì tập hợp chỉ chứa các phần tử duy nhất nên sẽ không có phần tử trùng lặp nào được thêm vào tập hợp
    2. So sánh kích thước của tập hợp và danh sách
      • Nếu kích thước của danh sách & tập hợp bằng nhau thì có nghĩa là không có bản sao nào trong danh sách
      • Nếu kích thước của danh sách và tập hợp khác nhau thì có nghĩa là có, có các bản sao trong danh sách

    Chúng tôi đã tạo một hàm tuân theo thuật toán trên i. e

    def checkIfDuplicates_1[listOfElems]:
        ''' Check if given list contains any duplicates '''
        if len[listOfElems] == len[set[listOfElems]]:
            return False
        else:
            return True
    

    Bây giờ, hãy sử dụng chức năng này để kiểm tra xem danh sách của chúng ta có chứa bất kỳ bản sao nào hay không. e.
    ______9
    Đầu ra
    4
    -1
    1
    
    0
    Phân tích độ phức tạp của giải pháp này.

    Vì chúng ta đang tạo một tập hợp từ danh sách, nên độ phức tạp sẽ là n[log[n]]. So sánh kích thước là phép toán O[1]. Vì vậy, độ phức tạp của giải pháp này là n[log[n]]

    Ngay cả trong kịch bản tốt nhất tôi. e. nếu danh sách chỉ chứa phần tử trùng lặp, thì độ phức tạp của giải pháp này sẽ là n[log[n]] vì chúng tôi chỉ thêm tất cả các phần tử từ danh sách vào tập hợp

Chủ Đề