- 题目描述
给你一个整数数组 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
- 思考
- 简单数组遍历,设置计数count,遍历数组arr[ ]
- 由于数组长度为n,连续三个元素都是奇数应满足:从i=2开始遍历,满足条件
arr[i-2]%2==1&&arr[i-1]%2==1&&arr[i]%2==1
时count++ - 若遍历结束时count>=1,输出true
- 题解
bool threeConsecutiveOdds(int* arr, int arrSize) {
int count=0;
for(int i=2 ; i<arrSize ; i++){
if(arr[i-2]%2==1&&arr[i-1]%2==1&&arr[i]%2==1)
count++;
}
if(count>=1) return true;
else return false;
}
- 提交
- 复杂度分析
- 时间复杂度O(n)
需要遍历数组 arr[ ]一次,n为数组长度,for循环里面的代码会执行n遍,因此它消耗的时间是随着n的变化而变化的,即时间复杂度O(n) - 空间复杂度O(1)
虽然有循环,但没有再分配新的空间,随着n的变化,所需开辟的内存空间并不会随着n的变化而变化,即空间复杂度为一个常量,表示为O(1)