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
8Mã 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,
- 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
- 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 ra4 -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
- Thêm nội dung của danh sách trong một tập hợp