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

Python에서 배열이 정렬 및 회전되었는지 확인

<시간/>

n개의 고유한 값으로 구성된 배열이 있다고 가정합니다. 이 배열이 정렬되어 시계 반대 방향으로 회전했는지 확인해야 합니다. 여기에서는 완전히 정렬된 배열이 정렬 및 회전된 것으로 간주되지 않도록 최소한 한 번의 회전이 필요합니다.

따라서 입력이 nums =[4,5,6,8,1,3]과 같으면 시계 방향으로 두 번 회전할 수 있으므로 출력은 True가 됩니다. 그러면 [1, 3, 4, 5, 6, 8].

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

  • min_element :=최소 숫자
  • min_index :=min_element의 인덱스(숫자)
  • before_sorted :=참
  • 1에서 min_index - 1까지의 범위에 있는 i에 대해
    • 숫자[i] <숫자[i - 1]이면
      • before_sorted :=거짓
      • 루프에서 나오다
  • after_sorted :=참
  • min_index + 1 ~ nums - 1 범위의 i에 대해
    • 숫자[i] <숫자[i - 1]이면
      • after_sorted :=거짓
      • 루프에서 나오다
  • before_sorted 및 after_sorted가 true이고 nums
  • 참 반환
  • 그렇지 않으면
    • 거짓을 반환
  • 이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

    예시

    def solve(nums):
       min_element = 999999
       min_index = -1
       min_element = min(nums)
       min_index = nums.index(min_element) before_sorted = True
       for i in range(1, min_index):
          if nums[i] < nums[i - 1]:
             before_sorted = False
             break
       after_sorted = True
       for i in range(min_index + 1, len(nums)):
          if nums[i] < nums[i - 1]:
             after_sorted = False
             break
       if before_sorted and after_sorted and nums[-1] < nums[0]:
          return True
       else:
          return False
    nums = [4,5,6,8,1,3]
    print(solve(nums))
    반환

    입력

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

    출력

    True