Matrix Diaqonal Cəmi Leetcode Həlli

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

Problem bəyanat

Matrix Diagonal Sum problemində bir kvadrat matris tam ədəd verilir. Diaqonallarında mövcud olan bütün elementlərin, yəni ikincil diaqonal kimi birincil diaqonaldakı elementlərin də cəmini hesablamalıyıq. Hər bir element yalnız bir dəfə sayılmalıdır.

misal

mat = [[1,2,3],
       [4,5,6],
       [7,8,9]]
25

Explanation:

Çaprazlar cəmi: 1 + 5 + 9 + 3 + 7 = 25
Element mat [1] [1] = 5 yalnız bir dəfə sayıldığına diqqət yetirin

mat = [[1,1,1,1],
       [1,1,1,1],
       [1,1,1,1],
       [1,1,1,1]]
8

Explanation:

Diagonals sum: (1+1+1+1)+(1+1+1+1)=8.

Yanaşma

Matrix Diaqonal Cəmi Leetcode HəlliPin

Verilən kvadrat matrisdə yalnız diaqonal elementləri əlavə etməli və cəmini qaytarmalıyıq.
Diaqonal elementlər üçün matrisdə göstəricilərin nəyin olacağını görək. Əvvəlcə birincil diaqonalda görsək, onun ilk elementi i = 0, j = 0 indeksində və növbəti element (i + 1, j + 1) -dədir. Eynilə son element indeksdə olacaq (n-1, n-1), burada n verilən kvadrat matrisin enidir. Bu diaqonaldakı bütün göstəricilər i = j-dir.
Beləliklə, bu diaqonal üzərində bir döngədə aşağıdakı kimi təkrarlaya bilərik:

1. Başlanğıc i = 0 və j = 0.
2. İ halında bir döngə işlədin
3. Cari elementi əlavə edin. İ və j hər ikisini 1 artırın.

İndi ikincil diaqonal üçün baxaq. birinci sətirdə ilk elementin göstəricisi i = 0, j = n-1. Növbəti element (i + 1.j-1) -dədir. Eynilə son element (n-1,0) -dədir.
Beləliklə, döngə şəklində bu diaqonal üzərində təkrarlaya bilərik:

1. Başlanğıc i = 0 və j = n-1.
2. İ halında bir döngə işlədin = 0.
3. Cari elementi əlavə edin (əgər əsas diaqonalda deyilsə, yəni. İ == j). İ-ni 1-ə, j-ni 1-ə endirin.

Nəhayət hər iki əməliyyatdan sonra cəmi qaytarın.

Həyata keçirilməsi

Matrix Diaqonal Cəmi Leetcode Həlli üçün C ++ Proqramı

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

int diagonalSum(vector<vector<int>>& mat) 
{
    int n=mat.size();

    int sum=0;
    int i=0,j=0;

    while(i<n)
    {
        sum+=mat[i][j];
        i++;
        j++;
    }

    i=0;
    j=n-1;

    while(i<n)
    {
        if(i!=j)   sum+=mat[i][j];
        i++;
        j--;
    }

    return sum;
}

int main() 
{
    vector<vector<int>> mat={
            {1,2,3},
            {4,5,6},
            {7,8,9}  
    };
   
    cout<<diagonalSum(mat)<<endl;

  return 0; 
}
25

Matrix Diagonal Sum Leetcode Həlli üçün Java Proqramı

import java.lang.*;

class Rextester
{  
    public static int diagonalSum(int[][] mat) 
    {
        int n=mat.length;
        
        int sum=0;
        int i=0,j=0;
        
        while(i<n)
        {
            sum+=mat[i][j];
            i++;
            j++;
        }
        
        i=0;
        j=n-1;
        
        while(i<n)
        {
          if(i!=j)   sum+=mat[i][j];
            
            i++;
            j--;
        }
        
        return sum;
        
    }
    
    public static void main(String args[])
    {
       int[][] mat={
            {1,2,3},
            {4,5,6},
            {7,8,9}  
        };
    
       System.out.println(diagonalSum(mat));
   
    }
}
25

Matrix Diagonal Sum Leetcode Həlli üçün Mürəkkəblik Analizi

Zamanın mürəkkəbliyi

O (N): Burada N, N ^ 2 elementi olan kvadrat matrisin ölçüsüdür. Yalnız hər iki diaqonal element üzərində hərəkət etdiyimiz üçün, zaman mürəkkəbliyi diaqonallarda (2 * N) mövcud olan elementlərin sayına, yəni O (N) -ə bərabər olacaqdır.

Kosmik Mürəkkəblik 

O (1): Burada heç bir əlavə yaddaş istifadə etmədiyimiz üçün kosmik mürəkkəblik sabitdir.

Şərh yaz

Translate »
1