假设我们有一个包含各种整数值和给定长度 k 的数组。我们必须从给定长度的数组中找出最大的子数组。如果 subarray1[i] ≠ subarry2[i] 并且 subarray1[i] > subarry2[i],则称一个子数组大于另一个子数组。
因此,如果输入类似于 nums = [5, 3, 7, 9], k = 2,那么输出将是 [7, 9]。
为了解决这个问题,我们将按照以下步骤操作 -
start := nums 的大小 - k
max_element := nums[开始]
max_index := 开始
当开始 >= 0 时,做
max_element := nums[开始]
max_index := 开始
如果 nums[start] > max_element 非零,则
返回 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]