သုံးဆက်တိုက် Odds Leetcode ဖြေရှင်းချက်


ခက်ခဲအဆင့် လွယ်ကူသော
မကြာခဏမေးတယ် Dj
အခင်းအကျင်း

ပြProbleနာဖော်ပြချက်

သုံးကြိမ်ဆက်တိုက်ပြThreeနာတွင်ကျွန်ုပ်တို့အားပေးထားသည် အခင်းအကျင်း နှင့်ပစ္စုပ္ပန်သို့မဟုတ်မအတွက်ခင်းကျင်းထဲမှာသုံးဆက်တိုက်ထူးဆန်းနံပါတ်များရှိမရှိစစ်ဆေးရပါမည်။ အကယ်၍ ၎င်းရှိလျှင်ကျွန်ုပ်တို့သည် true သို့ပြန်သွားရမည်။

နမူနာ

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

ရှင်းလင်းချက်

အဘယ်သူမျှမသုံးခုဆက်တိုက်လေးသာရှိပါသည်။ ထို့ကြောင့် false ပြန်လာ

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

ရှင်းလင်းချက်:

ပေးထားသောခင်းကျင်းမှုတွင်ကျွန်ုပ်တို့သည်ဆက်တိုက်ဒြပ်စင်အပိုင်း (၃) ခုစလုံးကိုစစ်ဆေးပါက၊ အောက်ပါအတိုင်းဖြစ်လိမ့်မည် -

သုံးဆက်တိုက် Odds Leetcode ဖြေရှင်းချက်

[၅၊ ၇၊ ၂၃] သည်သုံးကြိမ်ဆက်တိုက်အလေးသာခြင်းဖြစ်သည်။ ထို့ကြောင့်စစ်မှန်တဲ့ပြန်လာပါ။

ချဉ်းကပ်နည်း

၎င်းသည်ပေးထားသောခင်းကျင်းခြင်း၏တစ်ခုတည်းသောဖြတ်သန်းခြင်းကို အသုံးပြု၍ ဖြေရှင်းနိုင်သည့်ရိုးရှင်းသောပြproblemနာဖြစ်သည်။ ဖြတ်သန်းသွားစဉ်ကျွန်ုပ်တို့သည်ဆက်တိုက်ဒြပ်စင် (၃) ခုစလုံးကိုစစ်ဆေးရန်လိုအပ်သည်။ နံပါတ်သုံးခုစလုံးကိုထူးဆန်းတဲ့အရာကနေကျွန်တော်တို့ပြန်ရမယ်။

ဤအတွက်ကျွန်ုပ်တို့သည် for loop ကိုသုံးနိုင်သည်။ index = 3 မှ index = n-2 အုပ်စုတစ်ခုစီ၏တတိယ element ကို (ဆက်တိုက် element သုံးခု) အတွက်ကြားရသည်။ ထိုအခါလက်ရှိဆက်တိုက်အပိုင်းကို arr [i-1]၊ arr [i-2] နှင့် arr [i] တို့ဖြင့်ဖော်ပြလိမ့်မည်။
ကျနော်တို့ရှေ့တတိယ element ကနေကြားမှာစတင်ပါလိမ့်မယ်။ Array ၏အရွယ်အစားသည်သုံးခုထက်နည်းလျှင်ကျွန်ုပ်တို့သည် false ကိုပြန်သွားပါမည်။

algorithm

  1. i ကို variable တစ်ခုပြုလုပ်ပြီး index 2 နဲ့စပါ။
  2. ပြေးပါ ကွင်းဆက်အတွက် ငါနောက်ဆုံးဒြပ်စင်မှီတိုင်အောင်, (n-1) ကြိမ်မြောက်အညွှန်းကိန်း။
  3. indices i, (i-1) နှင့် (i-2) ရှိဒြပ်စင်သည်မထူးခြားမှုရှိမရှိစစ်ဆေးပါ။
  4. အကယ်၍များ သုံးယောက်လုံးထူးဆန်းနေရင် true ပြန်လာပါ။ ကျန်တဲ့သူတွေကတော့ဒီလမ်းကြောင်းကိုဆက်သွားကြမယ်။
  5. ညွှန်းကိန်းအားလုံးကိုဖြတ်ကျော်ပြီးလျှင် false ကိုပြန်သွားပါ။

အကောင်အထည်ဖော်ရေး

သုံးကြိမ်ဆက်တိုက်အလေးသာမှုများ Leetcode Solution အတွက် 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

သုံးဆက်တိုက်အလေးသာမှုများ Leetcode Solution အတွက် 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

သုံး Consecutive Odds Leetcode ဖြေရှင်းချက်များအတွက်ရှုပ်ထွေးခွဲခြမ်းစိတ်ဖြာ

အချိန်ရှုပ်ထွေး

အို (N): N သည်ပေးထားသောခင်းကျင်း၏အရွယ်အစားဖြစ်သည်။ အညွှန်းတစ်ခုချင်းစီအတွက်ကျွန်ုပ်တို့တစ်ကြိမ်တည်းသာသွားနေသောကြောင့်အချိန်ရှုပ်ထွေးမှုသည်အို (N) ဖြစ်လိမ့်မည်။

အာကာသရှုပ်ထွေးမှု 

အို (၁) ကျွန်ုပ်တို့အပိုမှတ်ဉာဏ်မသုံးပါ။ ထို့ကြောင့်အာကာသရှုပ်ထွေးစဉ်ဆက်မပြတ်ဖြစ်လိမ့်မည်။