Java 查找数组中最长的偶数和
我试图解决一个问题,这个问题需要一个大小为n的数组,并找到数组中具有偶数和的最长数字范围 例如,对于数组:[2,3,1,8,4,7,2],将返回值5,因为前五个数字的范围是构成偶数和的最长范围 我有一个有效的算法,但这是我期待进入的奖金。 请求只读取数组的值一次,并且仅读取一次 我的解决方案包括对整个数组求和,然后从头到尾找到最大长度,然后从头到尾找到最大长度。 但这会读取数组3次Java 查找数组中最长的偶数和,java,algorithm,loops,Java,Algorithm,Loops,我试图解决一个问题,这个问题需要一个大小为n的数组,并找到数组中具有偶数和的最长数字范围 例如,对于数组:[2,3,1,8,4,7,2],将返回值5,因为前五个数字的范围是构成偶数和的最长范围 我有一个有效的算法,但这是我期待进入的奖金。 请求只读取数组的值一次,并且仅读取一次 我的解决方案包括对整个数组求和,然后从头到尾找到最大长度,然后从头到尾找到最大长度。 但这会读取数组3次 你能给我指一下正确的方向吗?谢谢 两个奇数之和为偶数,两个偶数之和为偶数,因此子阵列具有偶数和的充要条件是奇数的偶
你能给我指一下正确的方向吗?谢谢 两个奇数之和为偶数,两个偶数之和为偶数,因此子阵列具有偶数和的充要条件是奇数的偶数。因此,我们可以通过跟踪第一个奇数的索引、最后一个奇数的索引和奇数的数目来找到答案。如果奇数为偶数,则整个数组的和为偶数。否则,我们可以从第一个奇数加上1的索引到数组的末尾得到子数组的最大长度,并从数组的前面得到比奇数的最后一个索引小1的子数组。这些子阵列都是最大的,具有偶数个奇数,因为每个子阵列中排除了一个奇数
函数longestEven(arr){
设firstOdd=-1,
lastOdd=-1,
oddCount=0;
for(设i=0;i log(longestEven([2,3,1,8,4,7,2])你想让我帮你写,还是解释一下怎么做?我希望有一个解释,一种伪代码。我一直在考虑寻找数组中的第一个不均匀数,保存它的索引并计算其余的不均匀数。我的方向对吗?@EatayMizrachi我会这么做。要么总数是偶数,要么你需要去掉一个不均匀数。因此,确实要在数组上循环一次,并保持第一个不均匀数的索引。但也保留了上一次指数不均的数字。如果最后一个不均匀的数字接近尾声,请删除该数字以及之后的所有偶数。@Smith42先生,我想让您知道,当我说奖金时,很容易误解我所做的事情。这项作业没有评分,这是一项奖励,因为找到答案是一项更大的挑战。请注意,我还添加了一条评论,询问我的方向是否正确。@iota非常感谢,感谢您的详细解释。:)