Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 비감소 배열


n개의 정수가 있는 배열이 있다고 가정하고 최대 하나의 요소를 수정하여 배열이 감소하지 않는지 여부를 확인합니다. 모든 i에 대해 array[i] <=array[i + 1](1 <=i 이 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • arr에 2개 이하의 요소가 있으면 ture를 반환합니다.

  • ans :=거짓

  • 범위 0의 i에서 arr의 요소 수 – 2

    • 만약 arr[i]> arr[i + 1]

      • ans가 0이 아니면 false를 반환하고, 그렇지 않으면 ans :=True

      • 내가> 0인 경우

        • arr[i - 1]> arr[i + 1]이면 arr[i + 1] :=arr[i]

  • true를 반환

예제(파이썬)

더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −

class Solution(object):
   def checkPossibility(self, nums):
      if len(nums) <=2:
         return True
      ans = False
      for i in range(len(nums)-1):
         if nums[i] > nums[i+1]:
            if ans:
               return False
            else:
               ans = True
            if i>0:
               if nums[i-1] > nums[i+1]: nums[i+1] = nums[i]
      return True
ob1 = Solution()
print(ob1.checkPossibility([4,2,3,5]))

입력

[4,2,3,5]

출력

True