【发布时间】:2017-01-26 14:34:57
【问题描述】:
谁能为以下问题提出一个简单的解决方案。
最长子数组:求子数组中元素之和小于等于“k”的最长连续子数组的长度。
输入是:array 和 k。
例子:
Array = {1,2,3}, k = 3
输出:
2
解释:
子数组:{1},{2},{3},{1,2},{2,3},{1,2,3}
{1,2} => 最大长度 = 2; 1+2 = 3 (
【问题讨论】:
-
问题陈述不清楚。您想找到小于或等于
k的最大可能值吗?这听起来对编码来说太微不足道了,因为它本身就是k。 -
您是要查找 length 为 k 的子数组,还是 sum 为 k 的子数组 ?
-
很抱歉造成混淆。现在编辑问题。
-
找到最小元素并将其添加到子数组中,然后将其从数组中删除。重复直到子数组的
sum大于k。我认为这是一个简单的解决方案。 -
@ĐăngKhoaHuỳnh:它必须是一个连续的子数组,而不仅仅是任何子集。