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

Kiểm tra xem việc đảo ngược mảng con có làm cho mảng được sắp xếp bằng Python hay không

Giả sử chúng ta có một mảng gọi là nums với các phần tử duy nhất. Chúng ta phải kiểm tra xem mảng có được sắp xếp hay không sau khi đảo ngược một mảng con của nó. Nếu mảng đã được sắp xếp, thì cũng trả về true.

Vì vậy, nếu đầu vào giống như nums =[4,6,27,25,15,9,37,42], thì đầu ra sẽ là True vì nếu chúng ta đảo ngược [9,15,25,27], thì mảng sẽ được sắp xếp.

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

  • n:=kích thước của nums
  • nếu mảng chỉ có một phần tử thì trả về True
  • i:=1
  • đối với tôi trong phạm vi từ 1 đến n - 1, thực hiện
    • nếu nums [i - 1]
    • nếu tôi giống với n, thì trả về true, nếu không thì trả về từ vòng lặp
  • j:=i
  • while j
  • nếu i> 1 và nums [j]
  • j:=j + 1
  • nếu j giống với n, thì trả về True
  • k:=j
  • nếu nums [k]
  • while k> 1 và k
  • nếu nums [k]
  • k:=k + 1
  • trả về True
  • Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

    Mã mẫu

    def solve(nums):
       n = len(nums)
       if n == 1:
          return True
     
       i = 1
       for i in range(1, n):
          if nums[i - 1] < nums[i] :
             if i == n:
               return True
          else:
             break
       j = i
       
       while j < n and nums[j] < nums[j - 1]:
          if i > 1 and nums[j] < nums[i - 2]:
             return False
          j += 1
     
       if j == n:
          return True
     
       k = j
       if nums[k] < nums[i - 1]:
          return False
     
       while k > 1 and k < n:
          if nums[k] < nums[k - 1]:
             return False
          k += 1
       return True
    
    nums = [4,6,27,25,15,9,37,42]
    print(solve(nums))

    Đầu vào

    [4,6,27,25,15,9,37,42]

    Đầu ra

    True