모든 요소가 고유한 nums라는 숫자 배열이 있다고 가정합니다. num이 거의 정렬되었는지 확인해야 합니다. 우리가 알고 있듯이 배열의 요소가 정렬된 배열의 원래 위치에서 최대 1 거리에 있을 때 배열이 거의 정렬된 것입니다.
따라서 입력이 nums =[10, 30, 20, 40]과 같으면 10이 원래 위치에 배치되고 다른 모든 요소가 실제 위치에서 최대 한 위치에 있으므로 출력은 True가 됩니다.피>
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- i :=0
- 동안 i <숫자 크기 - 1, do
- 숫자[i]> 숫자[i + 1]이면
- 숫자[i]와 숫자[i + 1] 교환
- 나는 :=나는 + 1
- 나는 :=나는 + 1
- 숫자[i]> 숫자[i + 1]이면
- 0부터 숫자 - 1까지의 범위에 있는 i에 대해
- 숫자[i]> 숫자[i + 1]이면
- 거짓을 반환
- 숫자[i]> 숫자[i + 1]이면
- 참 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(nums): i = 0 while i < len(nums) - 1: if nums[i] > nums[i + 1]: nums[i], nums[i + 1] = nums[i + 1], nums[i] i += 1 i += 1 for i in range(len(nums) - 1): if nums[i] > nums[i + 1]: return False return True nums = [10, 30, 20, 40] print(solve(nums))
입력
[10, 30, 20, 40]
출력
True