给你一个整数数组 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++]1 2 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]1 2 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]1 2 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]1 2 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。