අඛණ්ඩ ඔඩ්ස් තුනක් ලීට්කෝඩ් විසඳුම


දුෂ්කරතා මට්ටම පහසු
නිතර අසනු ලැබේ ඩීජි
අරා

ගැටළු ප්රකාශය

“අඛණ්ඩව තුන්වන” ගැටලුවේදී අපට ලබා දී ඇත්තේ අ අරාව අරාවෙහි අඛණ්ඩව අමුතු සංඛ්‍යා තුනක් තිබේද යන්න අප විසින් පරීක්ෂා කළ යුතුය. එය තිබේ නම් අප සත්‍යය වෙත ආපසු යා යුතුය, නැතහොත් අප අසත්‍යය වෙත ආපසු එනු ඇත.

උදාහරණයක්

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

පැහැදිලි කිරීම:

අඛණ්ඩව අවාසි තුනක් නොමැත. එබැවින් බොරු ආපසු එවන්න.

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

පැහැදිලි කිරීම:

ලබා දී ඇති අරාව තුළ අපි අඛණ්ඩ මූලද්‍රව්‍ය කොටස් තුනම පරීක්ෂා කරන්නේ නම්. එය පහත පරිදි වේ:

අඛණ්ඩ ඔඩ්ස් තුනක් ලීට්කෝඩ් විසඳුම

[5, 7, 23] යනු අවාසි තුනකි. එබැවින් සත්‍යය වෙත ආපසු යන්න.

ප්රවේශය

එය ලබා දී ඇති අරාවෙහි තනි ගමන් මාර්ගයක් භාවිතයෙන් විසඳිය හැකි සරල ගැටළුවකි. සංචලනය අතරතුරදී අපට අඛණ්ඩ මූලද්‍රව්‍ය තුනම පරීක්ෂා කළ යුතුය. සංඛ්‍යා තුනම අමුතු බව අපට පෙනී යන කාරණය, අපි සත්‍යය වෙත ආපසු යමු.

මේ සඳහා අපට a for loop එකක් භාවිතා කළ හැකි අතර එක් එක් කාණ්ඩයේ තුන්වන මූලද්‍රව්‍යය සඳහා (අඛණ්ඩ මූලද්‍රව්‍ය 3) දර්ශකය = 2 සිට දර්ශකය = n-1 දක්වා නැවත යෙදිය හැකිය. එවිට අඛණ්ඩ අඛණ්ඩ කොටස arr [i-2], arr [i-1] සහ arr [i] යන මූලද්‍රව්‍ය මගින් නිරූපණය කෙරේ.
අපි ඉදිරිපස සිට තුන්වන මූලද්රව්යයෙන් නැවත ආරම්භ කිරීම ආරම්භ කරමු. අරාවෙහි විශාලත්වය තුනකට වඩා අඩු නම් අපි වැරදියට ආපසු යමු.

ඇල්ගොරිතම

  1. විචල්ය i සාදන්න සහ දර්ශකය 2 සමඟ ආරම්භ කරන්න.
  2. ධාවනය කරන්න ලූප් සඳහා i සඳහා අවසාන මූලද්‍රව්‍යය වන තෙක් (n-1) වන දර්ශකය.
  3. I, (i-1) සහ (i-2) දර්ශකවල මූලද්‍රව්‍යය අමුතුද නැද්ද යන්න පරීක්ෂා කරන්න.
  4. මේ තුනම අමුතු නම්, සත්‍යය වෙත ආපසු යන්න. නැතහොත් ගමන් කිරීම දිගටම කරගෙන යන්න.
  5. සියලුම දර්ශක හරහා ගමන් කිරීමෙන් පසු, අසත්‍යය වෙත ආපසු යන්න.

ක්රියාත්මක කිරීම

අඛණ්ඩ ඔඩ්ස් ලීට්කෝඩ් විසඳුමක් සඳහා සී ++ වැඩසටහන

#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

අඛණ්ඩ ඔඩ්ස් ලීට්කෝඩ් විසඳුමක් සඳහා ජාවා වැඩසටහන

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

අඛණ්ඩ ඔඩ්ස් ලීට්කෝඩ් විසඳුමක් සඳහා සංකීර්ණ විශ්ලේෂණය

කාල සංකීර්ණත්වය

මත) : මෙහි N යනු දී ඇති අරාවේ ප්‍රමාණයයි. අපි එක් එක් දර්ශකය සඳහා එක් වරක් පමණක් ගමන් කරන බැවින්, කාල සංකීර්ණතාව O (N) වේ.

අභ්‍යවකාශ සංකීර්ණතාව 

ඕ (1): අපි කිසිදු අමතර මතකයක් භාවිතා නොකරමු. එබැවින් අවකාශයේ සංකීර්ණතාව නියත වනු ඇත.