다양한 정수 값과 주어진 길이 k를 포함하는 배열이 있다고 가정합니다. 주어진 길이의 배열에서 가장 큰 부분배열을 찾아야 합니다. 하위 배열은 하위 배열1[i] ≠ 하위 배열2[i] 및 하위 배열1[i]> 하위 배열2[i]인 경우 다른 하위 배열보다 크다고 합니다.
따라서 입력이 nums =[5, 3, 7, 9], k =2와 같으면 출력은 [7, 9]가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- start :=숫자 크기 - k
- max_element :=nums[시작]
- max_index :=시작
- 시작하는 동안>=0, 수행
- nums[start]> max_element가 0이 아니면
- max_element :=nums[시작]
- max_index :=시작
- 반환 nums[인덱스 max_index에서 max_index + k로]
- nums[start]> max_element가 0이 아니면
- 반환 nums[인덱스 max_index에서 max_index + k로]
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
def solve(nums, k): start = len(nums) - k max_element = nums[start] max_index = start while start >= 0: if nums[start] > max_element: max_element = nums[start] max_index = start start -= 1 return nums[max_index:max_index + k] print(solve([5, 3, 7, 9], 2))
입력
[5, 3, 7, 9], 2
출력
[7, 9]