Матрик Диагонал Сум Леетцоде Солутион


Ниво тешкоће Лако
Често питани у адобе
Ред матрица

Изјава о проблему

У задатку матричног дијагоналног збира квадрат матрица целих бројева је дато. Морамо израчунати збир свих елемената присутних на његовим дијагоналама, односно елементима на примарној дијагонали као и на секундарној дијагонали. Сваки елемент треба бројати само једном.

Пример

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

objašnjenje:

Збир дијагонала: 1 + 5 + 9 + 3 + 7 = 25
Приметите да се елемент мат [1] [1] = 5 броји само једном

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

objašnjenje:

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

Приступ

Матрик Диагонал Сум Леетцоде Солутион

У датој квадратној матрици морамо само додати дијагоналне елементе и вратити њен збир.
Погледајмо какав ће бити образац индекса у матрици за дијагоналне елементе. Прво ако видимо на примарној дијагонали, његов први елемент је на индексу и = 0, ј = 0, а следећи елемент је на (и + 1, ј + 1). Слично томе, последњи елемент биће на индексу (н-1, н-1) где је н ширина дате квадратне матрице. Сви индекси на овој дијагонали имају и = ј.
Дакле, можемо петру да прелазимо преко ове дијагонале на следећи начин:

1. Иницирајте и = 0 и ј = 0.
2. Покрените петљу док и
3. Додајте тренутни елемент. Повећај и и ј за 1.

Сада да видимо секундарну дијагоналу. индекс првог елемента у првом реду је и = 0, ј = н-1. Следећи елемент је на (и + 1.ј-1). Слично томе, последњи елемент је на (н-1,0).
Тако да можемо да прелазимо преко ове дијагонале у петљи на следећи начин:

1. Иницирајте и = 0 и ј = н-1.
2. Покрените петљу док и = 0.
3. Додајте тренутни елемент (ако не лежи на примарној дијагонали, тј. И == ј). Повећање и за 1 и смањење ј за 1.

Коначно вратите суму након оба поступка.

Имплементација

Ц ++ програм за матрично дијагонално збројно решење кода

#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

Јава програм за Матрик Диагонал Сум Леетцоде Солутион

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

Анализа сложености решења матрицног дијагоналног збира Леетцоде

Сложеност времена

НА) : Овде је Н величина квадратне матрице која има Н ^ 2 елемента. Како се крећемо само по оба дијагонална елемента, временска сложеност биће једнака броју елемената присутних на дијагоналама (2 * Н), односно О (Н).

Сложеност простора 

О (1): Овде је сложеност простора константна јер не користимо никакву додатну меморију.