如何在给定的整数数组中找到最长的奇数和子数组? (以最有效的方式)

时间:2019-04-23 08:33:01

标签: java arrays time-complexity

问题:您需要在给定的整数数组中找到具有奇数和的最长子数组,但是时间复杂度和空间辅助都应该是最好的。

我尝试使用while循环和两个变量作为索引遍历数组(low,high while(low <= high)...),但每次都没有很好的答案...

我已经尝试过:(sum是数组的总和)

while (low <= high) {

            if((sum - a[low]) % 2 != 0)
                return (high - low);

            else if((sum - a[high]) % 2 != 0)
                return (high - low);

            else{
                if((sum - a[low]) % 2 == 0){
                    sum -= a[low];
                    low++;
                }

                if((sum - a[high]) % 2 == 0){
                    sum -= a[high];
                    high--;
                }
            }
        }

对于{2, 2, 2, 1, 1, 2, 2, 2, 2},我希望输出为5 但是我要2

1 个答案:

答案 0 :(得分:0)

  1. 如果整个数组都是奇数,那么就可以了。
  2. 如果是偶数,则需要找到最接近数组末尾的偶数。
    • 如果该数字即将开始,则结果从下一个位置到结束都将处于亚距状态
    • 如果该数字接近结尾,则结果从开始到该数字不相等(数字本身除外)。