【发布时间】:2021-08-29 01:18:11
【问题描述】:
给定一个数组,从所有可能的子数组中找出最小元素和次小元素的最大和。更正式地说,如果我们写出所有 (nC2) 个大小 >=2 数组的子数组,并找到最小和第二小的和,那么我们的答案将是它们之间的最大和。
Examples: Input : arr[] = [4, 3, 1, 5, 6] Output : 11`
Subarrays with smallest and second smallest are,
[4, 3] smallest = 3 second smallest = 4
[4, 3, 1] smallest = 1 second smallest = 3
[4, 3, 1, 5] smallest = 1 second smallest = 3
[4, 3, 1, 5, 6] smallest = 1 second smallest = 3
[3, 1] smallest = 1 second smallest = 3
[3, 1, 5] smallest = 1 second smallest = 3
[3, 1, 5, 6] smallest = 1 second smallest = 3
[1, 5] smallest = 1 second smallest = 5
[1, 5, 6] smallest = 1 second smallest = 5
[5, 6] smallest = 5 second smallest = 6
Maximum sum among all above choices is, 5 + 6 = 11
这个问题是关于GFG的,但我不明白它的解释。
请任何人给出 O(n) 时间复杂度的解决方案。
【问题讨论】:
-
您所指的GeeksforGeeks article包含6种语言的解释和实现。你的问题到底是什么?如果你想让我们解释一下为什么 GFG 上给出的解决方案是正确的:你了解它的什么,你在哪里理解它有困难?
-
@He3lixxx 实际上我不明白这个问题是如何减少到在数组中找到两个连续元素的最大总和?
-
我们需要检查所有连续的对,找到最大的对,就是这样!
-
@potter1024 这是我的问题,这个问题是如何减少到找到数组中两个连续元素的最大总和?
-
假设我们取一个超过 2 个数字的子数组,那么我们必须选择最小的和次小的。因此,其他数字是否很大并不重要。重要的是最小的 2 个数字。