nums라는 숫자 목록이 있다고 가정하고 num에서 가장 짧은 하위 목록의 길이를 찾아야 합니다. 하위 목록이 정렬되면 전체 배열 nums가 오름차순으로 정렬됩니다.
따라서 입력이 nums =[1,2,5,4,9,10]과 같으면 하위 목록 [4, 3]을 정렬하면 [0, 1, 3, 4]가 나오므로 출력은 2가 됩니다. , 8, 9]
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- f:=-1, l:=-1
- lst:=목록 번호 정렬
- 0에서 숫자 크기 범위의 i에 대해
- nums[i]가 lst[i]와 같지 않으면
- f가 -1과 같으면
- f :=나
- 그렇지 않으면
- 나는 :=나는
- f가 -1과 같으면
- nums[i]가 lst[i]와 같지 않으면
- l이 -1과 같고 f가 -1과 같으면
- 0을 반환
- l - f + 1을 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def solve(self, nums): f=-1 l=-1 lst=sorted(nums) for i in range(len(nums)): if nums[i]!=lst[i]: if f == -1: f=i else: l=i if l == -1 and f == -1: return 0 return l-f+1 ob = Solution() print(ob.solve([1,2,5,4,9,10]))
입력
[1,2,5,4,9,10]
출력
2