Paskal Üçbucağı Leetcode

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Çiy kərpic Amazon google Samsung
alqoritmlər Geyim kodlaşdırma müsahibə müsahibə hazırlığı LeetCode LeetCodeSolutions RiyaziyyatBaxılıb 47

The Paskal Üçbucağı Amazon, Microsoft və digər şirkətlərdə dəfələrlə soruşulan çox yaxşı bir Leetcode problemidir. mənfi olmayan tam ədədi verdik satırlar, əvvəlcə çap et satırlar paskal üçbucağının sətirləri.

misal

satırlar = 5

Paskal Üçbucağı LeetcodePin

satırlar = 6

Paskal Üçbucağı LeetcodePin

Paskal Üçbucağı Leetcode üçün həll növləri

  1. Dinamik proqramlaşdırma

Dinamik proqramlaşdırma

Yanaşma

Fikir ondan ibarətdir ki, bir paskal üçbucağımız varsa, cari satırın bitişik dəyərlərini təkrarən əlavə edərək növbəti sətiri asanlıqla hesablaya bilərik. Paskal üçbucağı yaratmağın bu təkrarlanan prosesi a hesab edilmişdir dinamik proqramlaşdırma hər bir sətri əvvəlki sətrə əsasən qurduğumuz yanaşma.

Paskal Üçbucağı Leccode üçün alqoritm

  1. əsas halları müəyyənləşdirmək.
  2. Paskal üçbucağının ilk cərgəsini {1} olaraq başlayın.
  3. Xarici döngəni i = 0-dan i = -ə keçir satırlar, üçbucağın hər sətrini yaratmaq üçün.
  4. Üçbucağın hər sətrinin elementini hesablamaq üçün j = 1-dən j = {əvvəlki sətir ölçüsü} -ə qədər daxili dövrəni işlədin.
  5. daxili döngədə, bir sıra elementlərini hesablayarkən, iç döngənin hər addımında əvvəlki sətrin bitişik elementlərinin hər cütünü əlavə edin.
  6. Daxili döngə bitdikdən sonra yaradılan sətri sadəcə çıxardın.
  7. Sayı üçün xarici dövrəni yerinə yetirin satırlar verilən və sonradan paskal üçbucağının hər sətrini çap edin.

The alqoritm aşağıda təsvir edilmişdir:

Paskal Üçbucağı LeetcodePin

Həyata keçirilməsi

Paskal Üçbucağı Leetcode üçün C ++ Proqramı
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

void pascalTriangle(int rows)
{
    if(rows == 0)
    return;
    
    vector <int> rowVector;
    
    for(int i=0;i<rows;i++)
    {
        rowVector.insert(rowVector.begin(),1);
        
        for(int j=1;j<rowVector.size() - 1 ;j++)
        rowVector[j] = rowVector[j]+rowVector[j+1];
        
        for(auto i : rowVector)
        cout<<i<<" ";
        
        cout<<endl;
    }
}
int main()
{
    int rows = 5;
    
    cout<<"The pascal triangle of "<<rows<<" rows is"<<endl;
    pascalTriangle(rows);
    
    
    return 0;
}
The pascal triangle of 5 rows is
1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
Paskal Üçbucağı Leetcode üçün Java Proqramı
import java.io.*;
import java.util.*;

class TutorialCup
{
    static void pascalTriangle(int rows)
    {
        if(rows == 0)
        return;
        
        ArrayList <Integer> rowVector = new ArrayList<>();
        
        for(int i=0;i<rows;i++)
        {
            rowVector.add(0,1);
            
            for(int j=1;j<rowVector.size() - 1 ;j++)
            rowVector.set(j,rowVector.get(j)+rowVector.get(j+1));
            
            Iterator it = rowVector.iterator();
            
            while(it.hasNext())
                System.out.print((Integer)it.next()+" ");
            
            System.out.println();
        }
    }
    public static void main (String[] args) 
    {
        int rows = 5;
    
        System.out.println("The pascal triangle of "+rows+" rows is");
        pascalTriangle(rows);
    }
}
The pascal triangle of 5 rows is
1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1

Mürəkkəblik təhlili

  1. Zamanın mürəkkəbliyi: T (n) = O(satırlar2), iki iç içə döngə.
  2. Məkan mürəkkəbliyi: A (n) = O (satırlar2), paskal üçbucağının hər bir satırını saxlamaq üçün.

References

Şərh yaz

Translate »