XNUMXつの連続したオッズリートコードソリューション


難易度 簡単に
よく聞かれる Dji
配列

問題文

「XNUMXつの連続したオッズ」の問題では、 配列 配列にXNUMXつの連続した奇数が存在するかどうかを確認する必要があります。 存在する場合はtrueを返す必要があり、そうでない場合はfalseを返します。

arr = [2,6,4,1]
false

説明 :

XNUMXつの連続したオッズはありません。 したがって、falseを返します。

arr = [1,2,34,3,4,5,7,23,12]
true

説明:

与えられた配列で、XNUMXつの連続する要素セグメントすべてをチェックする場合。 次のようになります:

XNUMXつの連続したオッズリートコードソリューション

[5、7、23]はXNUMXつの連続したオッズです。 したがって、trueを返します。

アプローチ

これは単純な問題であり、指定された配列のXNUMX回の走査を使用して解決できます。 トラバーサル中に、XNUMXつの連続する要素すべてをチェックする必要があります。 XNUMXつの数値すべてが奇数であることがわかった時点で、trueを返します。

このために、forループを使用して、各グループの3番目の要素(2つの連続する要素)をindex = 1からindex = n-2まで繰り返すことができます。 次に、現在の連続するセグメントは、要素arr [i-1]、arr [i-XNUMX]、およびarr [i]で表されます。
正面からXNUMX番目の要素から反復を開始します。 配列のサイズがXNUMX未満の場合、falseを返します。

アルゴリズム

  1. 変数iを作成し、インデックス2で初期化します。
  2. 実行する forループ 最後の要素、(n-1)番目のインデックスまでのi。
  3. インデックスi、(i-1)、(i-2)の要素が奇数かどうかを確認します。
  4. XNUMXつすべてが奇数の場合は、trueを返します。 それ以外の場合は、トラバーサルを続行します。
  5. すべてのインデックスをトラバースした後、falseを返します。

製品の導入

XNUMXつの連続したオッズリートコードソリューションのためのC ++プログラム

#include <bits/stdc++.h>
using namespace std;

bool threeConsecutiveOdds(vector<int>& arr) 
{
    int n=arr.size();

    for(int i = 2; i < n; i++) 
    {
        if(arr[i] % 2 == 1 && arr[i-1] % 2 == 1 && arr[i-2] % 2 == 1 )
        return true;
    }

    return false;

}

int main() 
{
    vector<int> arr={1,2,34,3,4,5,7,23,12};
    
    if(threeConsecutiveOdds(arr) )
        cout<<"true"<<endl;
    else
        cout<<"no"<<endl;

  return 0; 
}
true

XNUMXつの連続したオッズリートコードソリューションのためのJavaプログラム

import java.lang.*;

class Rextester
{  
    public static boolean threeConsecutiveOdds(int[] arr) {

        int n=arr.length;

        for(int i = 2; i < n; i++) 
        {
            if(arr[i] % 2 == 1 && arr[i-1] % 2 == 1 && arr[i-2] % 2 == 1 )
            return true;
        }

        return false;

    }
    
    public static void main(String args[])
    {
       int[] arr={1,2,34,3,4,5,7,23,12};
    
       System.out.println(threeConsecutiveOdds(arr));
   
    }
}
true

XNUMXつの連続したオッズリートコードソリューションの複雑さの分析

時間の複雑さ

オン) : ここで、Nは指定された配列のサイズです。 インデックスごとにXNUMX回だけトラバースするため、時間計算量はO(N)になります。

スペースの複雑さ 

O(1): 余分なメモリは使用していません。 したがって、スペースの複雑さは一定になります。