码迷,mamicode.com
首页 > 编程语言 > 详细

LeetCode 刷题c++:1550. 存在连续三个奇数的数组

时间:2020-08-19 19:42:08      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:错误   测试   signed   bool   c++   初始化   length   public   否则   

给你一个整数数组 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

 

解题:

1.

class Solution {
public:
    bool threeConsecutiveOdds(vector<int>& arr) {
        //size可以用来直接进行对链表元素进行计数,length不行
        int len = arr.size();
        //元素小于三个直接返回false
        if( len < 3 )return false;
        //进行计算 x 之前的元素中的奇数的个数并将其存储在 PI[x] 中。
        unsigned int i,j,n=0;
        vector<int> PI(len,0);//对Pi中的len个元素进行初始化为0
        for(i = 0 ; i < len ; i ++)//计算奇数个数并放入PI[x]中
        {
            if(arr[i]%2 == 1)
                n++;
            PI[i] = n;
            //cout<<n<<"    ";//用于测试
        }
        //计算,i,j差值为2,当PI[i]/PI[j]差值也为2时return false,否则return true;(前提:奇数开头)
        for(int i = 2 , j = 0 ; i < len ; i ++ , j ++)
        {
            if(PI[j]%2 ==1 && PI[i]-PI[j] == 2)return true;////////////////该处出现错误:对于数据【1,2,1,1】出错,但是找不到原因
//
PI[j]%2 ==1 用来判断开头是否是从奇数开始计算
} return false; } };

2.

class Solution {
public:
    bool threeConsecutiveOdds(vector<int>& arr) {
        //size可以用来直接进行对链表元素进行计数,length不行
        int len = arr.size();
        //元素小于三个直接返回false
        if( len < 3 )return false;
        //进行计算 x 之前的元素中的奇数的个数并将其存储在 PI[x] 中。
        unsigned int i,j,n=0;
        vector<int> PI(len,0);//对Pi中的len个元素进行初始化为0
        for(i = 0 ; i < len ; i ++)//计算奇数个数并放入PI[x]中,遇到偶数从0计数
        {
            if(arr[i]%2 == 1)
                n++;
            else n = 0;
            PI[i] = n;
          //  cout<<n<<"    ";//用于测试
        }
        //从PI中存储的数据中进行查找3的数,如果能找到3代表存在三个连续奇数return true
        for(int i = 0 ; i < len ;i ++)
        {
            if(PI[i] == 3)return true;
            //if(PI[i]-PI[j] == 3)return true;
        } 
       return false; 

    }
};

 

LeetCode 刷题c++:1550. 存在连续三个奇数的数组

标签:错误   测试   signed   bool   c++   初始化   length   public   否则   

原文地址:https://www.cnblogs.com/pipi-rtq/p/13516067.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!