목록 num과 또 다른 값 k가 있다고 가정하면 크기가 k인 각 하위 목록의 최대값을 찾아야 합니다.
따라서 입력이 nums =[12, 7, 3, 9, 10, 9] k =3과 같으면 출력은 [12, 9, 10, 10]
이 됩니다.이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
k> 숫자의 크기인 경우
-
빈 목록 반환
-
-
res :=새 목록
-
임시 :=숫자[0]
-
온도 :=npoint :=0
-
0에서 k − 1 범위의 i에 대해 다음을 수행합니다.
-
nums[i]> temp이면
-
임시 :=숫자[i]
-
포인트 :=나는
-
-
-
res의 끝에 temp 삽입
-
k 범위에서 숫자 크기까지의 i에 대해
-
nums[i]
-
temp :=숫자[포인트]
-
-
그렇지 않으면 nums[i]
=k일 때 -
포인트 :=i − k + 1
-
범위 i − k + 1에서 i까지의 j에 대해 수행
-
nums[j]> nums[point]이면
-
포인트 :=j
-
-
-
temp :=숫자[포인트]
-
-
그렇지 않으면
-
임시 :=숫자[i]
-
포인트 :=나는
-
-
res의 끝에 temp 삽입
-
-
반환 해상도
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
class Solution: def solve(self, nums, k): if k > len(nums): return [] res = [] temp = nums[0] point = 0 for i in range(k): if nums[i] > temp: temp = nums[i] point = i res.append(temp) for i in range(k, len(nums)): if nums[i] < temp and (i − point) < k: temp = nums[point] elif nums[i] < temp and (i − point) >= k: point = i − k + 1 for j in range(i − k + 1, i + 1): if nums[j] > nums[point]: point = j temp = nums[point] else: temp = nums[i] point = i res.append(temp) return res ob = Solution() nums = [12, 7, 3, 9, 10, 9] k = 3 print(ob.solve(nums, k))
입력
[12, 7, 3, 9, 10, 9], 3
출력
[12, 9, 10, 10]