Cho mảng số nguyên và độ dài k. Tìm mảng con (subarray) "lớn nhất" có độ dài k. Mảng con A lớn hơn B nếu tại vị trí đầu tiên khác nhau, A[i] > B[i].
Ví dụ: nums = [5, 3, 7, 9], k = 2 → kết quả [7, 9].
Giải thuật: duyệt từ phải sang trái tìm phần tử đầu tiên lớn nhất có thể làm đầu mảng con độ dài k.
start := len(nums) - k.max_element := nums[start],max_index := start.- Duyệt
startgiảm dần về 0: nếunums[start] > max_element, cập nhậtmax_elementvàmax_index. - Trả về
nums[max_index : max_index + k].
Ví dụ
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)) Đầu vào
[5, 3, 7, 9], 2
Đầu ra
[7, 9]