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

Kiểm tra xem mảng có thể được sắp xếp bằng một lần hoán đổi trong Python hay không

Giả sử, chúng ta được cung cấp một mảng chứa các phần tử nguyên. Chúng ta phải tìm hiểu xem các giá trị trong mảng có thể được sắp xếp theo thứ tự không giảm hay không nếu chúng ta chỉ có thể thực hiện một thao tác hoán đổi. Nếu có thể, chúng tôi nói rằng có thể làm được, nếu không thì không.

Vì vậy, nếu đầu vào giống như input_list =[7, 8, 12, 10, 11, 9], thì đầu ra sẽ là "Có thể thực hiện được"

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • temp_list:=một bản sao của danh sách input_list
  • sắp xếp danh sách temp_list
  • swap_count:=0
  • đối với tôi trong phạm vi từ 0 đến kích thước của input_list, hãy thực hiện
    • nếu input_list [i] không giống temp_list [i], thì
      • swap_count:=swap_count + 1
  • nếu swap_count giống 0 hoặc swap_count giống 2 thì
    • trả về True
  • nếu không,
    • trả về Sai

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

from copy import deepcopy
def solve(input_list):
   temp_list = deepcopy(input_list)
   temp_list.sort()
   swap_count = 0
   for i in range(len(input_list)):
      if input_list[i] != temp_list[i]:
         swap_count += 1
   if swap_count == 0 or swap_count == 2:
      print("Can be done")
   else:
      print("Can't be done")
input_list = [7, 8, 12, 10, 11, 9] 
solve(input_list)

Đầu vào

[7, 8, 12, 10, 11, 9]

Đầu ra

Can be done