java - 如何在给定的整数数组中找到最长的奇数子数组?(以最有效的方式)
问题描述
问题:您需要在给定的整数数组中找到最长的奇数子数组,但时间复杂度和空间辅助都应该是最好的。
我试过用一个while循环和两个索引变量(低,高while(低<=高)......)遍历数组,但我每次都没有得到好的答案......
我试过这个:(总和是数组的总和)
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
解决方案
- 如果整个数组是奇数,那么你就明白了。
- 如果是偶数,您需要找到最接近数组末尾的偶数。
- 如果此数字接近开始,则结果是从下一个位置到结束的子阵列
- 如果这个数字接近结束,那么结果是从开始到这个数字的子阵列(不包括数字本身)。
推荐阅读
- php - 在 PhpStorm 中通过 WSL 连接到 PostgreSQL
- c++ - ESP32 作为 BLE 服务器,无法配对循环计算机
- python - 如何使用 tkinter 隐藏和显示按钮?
- html - 哪些浏览器支持“分组帖子字段”?
- delphi - Firemonkey LiveBinding 到 TListbox 以显示图像
- oauth-2.0 - Slack Oauth - 如何强制我的 Slack 应用程序在某个频道中接收消息?
- python - 试图让心重新出现在地图上
- c# - EF Core 中的 ASP.NET Core 5 MVC 和 Identity - 基于资源的授权
- scala - “???”是什么意思 代表 Scala 语言?
- reactjs - react-google-maps 在使用 onClick 事件时重置地图