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

Python에서 회전한 후 배열을 정렬할 수 있는지 확인

<시간/>

nums라는 숫자 목록이 있다고 가정하고 회전을 사용하여 숫자를 정렬할 수 있는지 여부를 확인해야 합니다. 회전을 통해 num의 끝에서 일부 인접한 요소를 이동하여 배열 앞에 배치할 수 있습니다.

따라서 입력이 nums =[4,5,6,1,2,3]과 같으면 마지막 세 요소를 회전하여 정렬하고 처음으로 다시 보낼 수 있으므로 출력은 True가 됩니다.

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

  • n :=숫자 크기
  • 숫자가 정렬되면
    • 참 반환
  • 그렇지 않으면
    • 상태 :=참
    • 0 ~ n - 2 범위의 i에 대해
      • 숫자[i]> 숫자[i + 1]이면
        • 루프에서 나오다
    • 나는 :=나는 + 1
    • i ~ n - 2 범위의 k에 대해
      • 숫자[k]> 숫자[k + 1]이면
        • 상태 :=거짓
        • 루프에서 나오다
    • 상태가 거짓이면
      • 거짓을 반환
    • 그렇지 않으면
      • 숫자[n - 1] <=숫자[0]이면
        • 참 반환
      • 거짓을 반환

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

def solve(nums):
   n = len(nums)
   if all(nums[i] <= nums[i + 1] for i in range(len(nums) - 1)):
      return True
   else :
      status = True
      for i in range(n - 1) :
         if nums[i] > nums[i + 1] :
            break
      i += 1
      for k in range(i, n - 1) :
         if nums[k] > nums[k + 1]:
            status = False
            break
      if not status:
         return False
      else :
         if nums[n - 1] <= nums[0]:
            return True
         return False
nums = [4,5,6,1,2,3]
print(solve(nums))

입력

[4,5,6,1,2,3]

출력

True