【发布时间】:2021-01-21 17:18:56
【问题描述】:
所以,我刚刚进行了一次在线编程评估,其中给了我 2 个问题,其中一个是这个连续子数组和提供了 2 个复杂编码问题 + 8 个 mcqs,并且将在 1 小时内完成。
在这里,我将讨论上述子数组的最大连续和之一。通常我发现的困难部分是处理负数并且是连续的。我所做的是我首先将Collection.sort(arr) 应用于给定数组,然后我再次按它们的绝对值对负值进行排序,例如for i.. arr.get(i)! =abs(arr.get(i)) for j.. if arr.get(i)>arr.get(j) then swap so final array is -1, -2, 3,4,5,例如对于给定的随机数数组,我在每次 i 和所有 j 次迭代后保持一个最大值我有if max<sum(i.e. sum+arr.get(allj)+arr(particular i) then max=sum。所以这给了我最大的总和,但是我在 14 个案例中通过了 4 个案例,我认为排序数组的原因并不总是连续的,所以任何建议,以便我如何在其中灌输这种连续的逻辑以使其适用于所有人案例。
【问题讨论】:
-
不清楚你在问什么,也不清楚你当前的代码是什么。不知道为什么需要再次对负数进行排序;如果你对一个数组进行数字排序,它已经是数字顺序了。
-
我不得不重新排序负数,因为它没有使其他序列连续,通常在负数的情况下,no 越高,其值越低,因此当应用排序时,负数对齐为 -2,- 1,.. 导致正面问题的部分如此连续
-
但是如果你重新排序数组,你将如何找到“连续”部分?
-
嗯.. 我想排序确实使它连续,只是如果数字在排序顺序中有不同的总和,那么我们必须打破
-
它确实使整个数组连续,但是“最大的连续子数组”是整个数组,这在某种程度上解决了原始问题的一部分。您需要在原始输入数组中找到最大的连续 子数组,并将该子数组的值相加。