给你一个整数数组 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] 。
提示:
- 1 <= arr.length <= 1000
- 1 <= arr[i] <= 1000
方法一:枚举
思路与算法
枚举所有的连续的三个元素,判断这三个元素是否都是奇数,如果是,则返回 true。如果所有的连续的三个元素中,没有一个满足条件,返回 false。
代码
[sol1-C++]| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 
 | class Solution {public:
 bool threeConsecutiveOdds(vector<int>& arr) {
 int n = arr.size();
 for (int i = 0; i <= n - 3; ++i) {
 if ((arr[i] & 1) & (arr[i + 1] & 1) & (arr[i + 2] & 1)) {
 return true;
 }
 }
 return false;
 }
 };
 
 | 
 [sol1-Java]| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | class Solution {public boolean threeConsecutiveOdds(int[] arr) {
 int n = arr.length;
 for (int i = 0; i <= n - 3; ++i) {
 if ((arr[i] & 1) != 0 && (arr[i + 1] & 1) != 0 && (arr[i + 2] & 1) != 0) {
 return true;
 }
 }
 return false;
 }
 }
 
 | 
 [sol1-JavaScript]| 12
 3
 4
 5
 6
 7
 8
 9
 
 | var threeConsecutiveOdds = function(arr) {const n = arr.length;
 for (let i = 0; i <= n - 3; ++i) {
 if ((arr[i] & 1) & (arr[i + 1] & 1) & (arr[i + 2] & 1)) {
 return true;
 }
 }
 return false;
 };
 
 | 
 [sol1-Python3]| 12
 3
 4
 5
 6
 
 | class Solution:def threeConsecutiveOdds(self, arr: List[int]) -> bool:
 n = len(arr)
 return n >= 3 and \
 any(arr[i] & 1 and arr[i + 1] & 1 and arr[i + 2] & 1 \
 for i in range(n - 2))
 
 | 
 复杂度分析
记原序列的长度为 n。