1550.存在连续三个奇数的数组

Q

给你一个整数数组 arr,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回 true ;否则,返回 false 。

示例 1:

输入:arr = [2,6,4,1]
输出:false
解释:不存在连续三个元素都是奇数的情况。

示例 2:

输入:arr = [1,2,34,3,4,5,7,23,12]
输出:true
解释:存在连续三个元素都是奇数的情况,即 [5,7,23] 。

A

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

// class Solution {
// public boolean threeConsecutiveOdds(int[] arr) {
// int n = arr.length;
// for (int i = 0; i <= n - 3; ++i) {
// //a&1 = 0 偶数
// //a&1 = 1 奇数
// //任何偶数二进制第一位数必定0,而奇数必定是1,而1的二进制就是1
// if ((arr[i] & 1) != 0 && (arr[i + 1] & 1) != 0 && (arr[i + 2] & 1) != 0) {
// return true;
// }
// }
// return false;
// }
// }

class Solution {
public boolean threeConsecutiveOdds(int[] arr) {
LinkedList<Integer> temp = new LinkedList<>();
boolean result = false;
for (int i : arr){
if (i%2==1){
temp.push(i);
} else {
temp.clear();
}
if (temp.size()>2){
result = true;
}
}
return result;
}
}

  • 思路
    位运算判断奇偶数

  • 时间复杂度
    O(N)

  • 空间复杂度
    O(1)