Python程序:查找给定长度的最大子数组


假设我们有一个包含各种整数值的数组和一个给定的长度k。我们需要从数组中找到给定长度的最大子数组。如果子数组1[i] ≠ 子数组2[i] 且子数组1[i] > 子数组2[i],则称子数组1大于子数组2。

因此,如果输入类似于nums = [5, 3, 7, 9],k = 2,则输出将为[7, 9]。

为了解决这个问题,我们将遵循以下步骤:

  • start := nums的大小 - k
  • max_element := nums[start]
  • max_index := start
  • 当start >= 0时,执行以下操作:
    • 如果nums[start] > max_element为非零,则
      • max_element := nums[start]
      • max_index := start
    • 返回nums[从索引max_index到max_index + k]
  • 返回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]

更新于: 2021年10月4日

553 次查看

开启你的 职业生涯

完成课程获得认证

开始学习
广告