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

하위 배열을 뒤집으면 배열이 Python에서 정렬되는지 확인하십시오.

<시간/>

고유한 요소가 있는 num이라는 배열이 있다고 가정합니다. 하나의 하위 배열을 뒤집은 후 배열이 정렬되는지 여부를 확인해야 합니다. 배열이 이미 정렬되어 있으면 true도 반환합니다.

따라서 입력이 nums =[4,6,27,25,15,9,37,42]와 같으면 출력은 True가 됩니다. 왜냐하면 [9,15,25,27]을 반대로 하면 배열이 정렬됩니다.

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

  • n :=숫자 크기
  • 배열에 요소가 하나만 있으면 True를 반환합니다.
  • i :=1
  • 1 ~ n - 1 범위의 i에 대해
    • 숫자[i - 1] <숫자[i]이면
      • i가 n과 같으면 true를 반환하고, 그렇지 않으면 루프에서 나옵니다.
  • j :=나
  • j
  • i> 1이고 nums[j]
  • j :=j + 1
  • j가 n과 같으면 True를 반환합니다.
  • k :=j
  • nums[k]
  • k> 1 및 k
  • nums[k]
  • k :=k + 1
  • 참 반환
  • 이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

    예시 코드

    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))

    입력

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

    출력

    True