我一直在做这个练习,偶然发现了一个问题。
给定一个整数数组,确定它是否可以分成两个数组,每个数组的数量递增。例如3,1,5,2,4可以,但4,8,1,5,3不能。
问题出在这里。我无法理解为什么第一阵列可以,但第二阵列不能
给出了一个提示:
如果我们成功地对数组的初始段进行了分区,则其中一个部分必须包含到目前为止看到的最大元素。显然,为了我们的最大利益,另一部分的最大元素尽可能小。因此,给定下一个元素,如果它是此时的最大值,则将其添加到“最大包含部分”。如果不是,除了将其添加到其他部分(如果可能)之外别无选择(例如:如果它大于该部分的最大元素,但它不是当前最大值)。如果此过程失败,则无法进行分区,如果成功,则说明我们已经演示了分区。
最重要的部分是理解这种分区的逻辑 提前谢谢。
答案 0 :(得分:4)
让我们在{3,1,5,2,4}上使用给定的算法。
第一个数字是3.我们的分区是{3},{}。
接下来1.我们无法将其添加到{3},因此我们将其添加到另一个:{3},{1}。
接下来5.我们会将其添加到{3},以便将{1}保存为较小的数字:{3,5},{1}。
接下来2.我们必须将其添加到{1}:{3,5},{1,2}。 (现在我们明白为什么不向{1}添加5。)
接下来是4:我们别无选择:{3,5},{1,2,4}。