LeetCode算法题(数组相关)(七)——存在连续三个奇数的数组
程序员文章站
2022-03-15 21:04:39
...
问题:
给你一个整数数组 arr
,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回 true
;否则,返回 false
。
输入:arr = [2,6,4,1]
输出:false
解释:不存在连续三个元素都是奇数的情况。
输入:arr = [1,2,34,3,4,5,7,23,12]
输出:true
解释:存在连续三个元素都是奇数的情况,即 [5,7,23] 。
算法:
这个应该算比较简单的问题了,我们可以在循环数组的同时,判断是否有连续的三个奇数。连续的问题我们可以通过记录奇数的下标,我们定义一个变量count=0,如果上一个奇数和本次循环的奇数下标相减为1,那么就count++;如果相减不为1,那么就count=1。如果count=3了,返回true。
实现:
class Solution {
public boolean threeConsecutiveOdds(int[] arr) {
int index=-1,cnt = 0,len = arr.length;
for(int i = 0;i<len;i++){
if(arr[i]%2!=0){
if(index==-1){
cnt++;
}
else if(i-index==1)
cnt++;
else
cnt=1;
index = i;
}
if(cnt == 3)
return true;
}
return false;
}
}