Computer >> Máy Tính >  >> Lập trình >> Python

Tìm tất cả các cặp phân biệt có hiệu số bằng k trong Python

Trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu cách đếm số lượng các cặp số có hiệu số chính xác bằng k. Các số đã cho ở dạng danh sách và chúng tôi cung cấp giá trị của k cho chương trình.

Sử dụng cho Vòng lặp

Trong cách tiếp cận này, chúng tôi thiết kế hai vòng lặp for, một vòng lặp bên trong vòng lặp khác. Vòng lặp for bên ngoài theo dõi việc truy cập từng phần tử của danh sách đã cho. Vòng lặp for bên trong tiếp tục so sánh từng phần tử còn lại với phần tử của vòng lặp bên ngoài và tăng giá trị của biến đếm nếu nó khớp với sự khác biệt được yêu cầu.

Ví dụ

listA = [5, 3, 7, 2, 9]

k = 2
count = 0

# Elements of the list
for i in range(0, len(listA)):

# Make pairs
   for j in range(i + 1, len(listA)):

      if listA[i] - listA[j] == k or listA[j] - listA[i] == k:
         count += 1

print("Required Pairs: ",count)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Required Pairs: 3

Sử dụng Vòng lặp Trong khi

Trong một cách tiếp cận khác, chúng tôi sử dụng alogn vòng lặp while với mệnh đề if else. Ở đây, chúng tôi tiếp tục tăng chỉ số hiện tại và chỉ số tiếp theo tùy thuộc vào việc liệu sự khác biệt giữa hai cặp có khớp với mức chênh lệch bắt buộc hay không.

Ví dụ

listA = [5, 3, 7, 2, 9]

k = 2
count = 0

listA.sort()

next_index = 0
current_index = 0

while current_index < len(listA):
   if listA[current_index] - listA[next_index] == k:
      count += 1
      next_index += 1
      current_index += 1

   elif listA[current_index] - listA[next_index] > k:
      next_index += 1
   else:
      current_index += 1

print("Required Pairs: ",count)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Required Pairs: 3