Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình tìm mảng con lớn nhất với độ dài cho trước trong Python


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 start giảm dần về 0: nếu nums[start] > max_element, cập nhật max_element và 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]