Yığın elementlərinin cüt cüt ardıcıl olub olmadığını yoxlayın

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Çatdırılma Məlumat dəsti Fourkites
QalaqBaxılıb 32

Problem bəyanat

“Yığın elementlərinin cüt ardıcıl olub olmadığını yoxlayın” problemi sizə a qalaq məlumatların strukturu tam növü. Verilən bütün elementlərin cüt-cüt ardıcıl olub-olmadığını (artan və ya azalan qaydada) yoxsa yoxlamaq üçün bir funksiya yaradın. Yığında verilən elementlərin sayı bərabərdirsə, qalan bütün cütlərin elementi verilmiş yığının üstündə qoyub yoxlayın. Ayrıca, verilmiş yığının elementlərini proqram əsnasında saxlayın və nəticə ilə çap edin.

Yığın elementlərinin cüt cüt ardıcıl olub olmadığını yoxlayınPin

misal

s = [4, 5, -2, -3, 11, 10, 5, 6, 20]
Yes

İzahat: Funksiya çağırışından sonra yığın tərkibi (yuxarıdan) [20 6 5 10 11 -3 -2 5 4]. Yığındakı elementlərin sayı təkdir. Beləliklə 20 heç bir elementlə cütləşmir. Ancaq digər elementlər cütləşdirilir və ardıcıl cütləşirlər.

s = [4, 6, 6, 7, 4, 3]
No

İzahat: Funksiya çağırışından sonra yığın tərkibi (yuxarıdan) [3 4 7 6 6 4]. Və 4 və 6-nın 2 fərqi olduğundan, ardıcıl deyillər. Beləliklə nəticə Xeyrdir.

Yığın elementlərinin cüt-cüt ardıcıl olub olmadığını yoxlamaq üçün alqoritm

1. Create a stack data structure of the integer type and insert/push the elements in it.
2. Create another auxiliary stack data structure of the integer type.
3. Traverse while the original stack is not empty and push the element at top of  the auxiliary stack and pop the element from the top of the original stack.
4. Create a variable result of the boolean type and set its value as true.
5. Traverse through the auxiliary stack and pop the top 2 elements in the auxiliary stack and store them in 2 integer variables.
6. Check if the absolute difference of both the integer variables is not equal to 1, update the boolean variable result as false. Push / insert both the integer variables in the original stack.
7. Check if the size of the auxiliary stack is equal to 1, Push/insert the element at the top of the auxiliary stack in the original stack.
8. Return the boolean variable result.
9. Check if the returned value is equal to true, print "Yes" else print "No".
10. Print the original stack.

Bu problemdə bizə yoxlanılması lazım olan ilkin bir orijinal yığın verilir. Beləliklə, yalnız orijinal yığını itirmək istəmədiyimiz üçün hazırlanan köməkçi bir yığın yaradırıq. Başlanğıc yığını saxlamaq istəməsəydik və ilkin yığını dəyişdirə bilsəydik, elementləri orijinal yığından çıxara bilərdik. Beləliklə, köməkçi yığın yığın nüsxəsi kimi xidmət edir. İndi köməkçi bir yığına sahib olduqda, yuxarıdan 2 element çıxara bilərik və sonra əlaqəni yoxlayırıq.

Kodu

Yığın elementlərinin cüt cüt ardıcıl olub olmadığını yoxlamaq üçün C ++ Proqramı

#include <bits/stdc++.h> 
using namespace std; 
  
bool isConsecutive(stack<int> s){ 
    stack<int> aux; 
    
    while(!s.empty()){ 
        aux.push(s.top()); 
        s.pop(); 
    } 
  
    bool result = true; 
    
    while(aux.empty() > 1){ 
        int x = aux.top(); 
        aux.pop(); 
        int y = aux.top(); 
        aux.pop(); 
        
        if(abs(x - y) != 1){ 
            result = false; 
        }
  
        s.push(x); 
        s.push(y); 
    } 
  
    if(aux.size() == 1){ 
        s.push(aux.top());
    }
  
    return result; 
} 
  
int main(){ 
    stack<int> s;
    
    s.push(4); 
    s.push(5); 
    s.push(-2); 
    s.push(-3); 
    s.push(11); 
    s.push(10); 
    s.push(5); 
    s.push(6); 
    s.push(20); 
  
    if(isConsecutive(s)){ 
        cout << "Yes" << endl; 
    }
    
    else{
        cout << "No" << endl;
    }
  
    cout << "Stack content (from top)"
          " after function call\n"; 
    
    while(s.empty() == false){ 
       cout << s.top() << " "; 
       s.pop(); 
    } 
  
    return 0; 
}
Yes
Stack content (from top) after function call
20 6 5 10 11 -3 -2 5 4

Yığın elementlərinin cüt cüt ardıcıl olub olmadığını yoxlamaq üçün Java Proqramı

import java.util.*; 

class CheckPair{ 
    
    static boolean isConsecutive(Stack<Integer> s){  
        Stack<Integer> aux = new Stack<Integer> ();  
        
        while(!s.isEmpty()){  
            aux.push(s.peek());  
            s.pop();  
        }  
      
        boolean result = true;  
        
        while(aux.size() > 1){  
            int x = aux.peek();  
            aux.pop();  
            int y = aux.peek();  
            aux.pop();  
            
            if(Math.abs(x - y) != 1){  
                result = false;  
            }
      
            s.push(x);  
            s.push(y);  
        }  
      
        if(aux.size() == 1){  
            s.push(aux.peek());
        }
      
        return result;  
    }  
      
    public static void main(String[] args){  
        Stack<Integer> s = new Stack<Integer> ();
        
        s.push(4);  
        s.push(5);  
        s.push(-2);  
        s.push(-3);  
        s.push(11);  
        s.push(10);  
        s.push(5);  
        s.push(6);  
        s.push(20);  
      
        if(isConsecutive(s)){  
            System.out.println("Yes");
        }
        
        else{
            System.out.println("No");  
        }
      
        System.out.println("Stack content (from top) after function call");  
        
        while(s.isEmpty() == false){  
            System.out.print(s.peek() + " ");  
            s.pop();  
        }  
      
    }  
}
Yes
Stack content (from top) after function call
20 6 5 10 11 -3 -2 5 4

Mürəkkəblik təhlili

Zamanın mürəkkəbliyi

O (N), burada N yığındakı elementlərin sayıdır.

Kosmik Mürəkkəblik

O (N), N elementi saxlamaq üçün bir yığın istifadə etdik. Beləliklə, xətti bir kosmik mürəkkəblik əldə edilir.

Translate »