ميٽرڪس ڊائجونل سم ليوٽ ڪوڊ حل


تڪليف جي سطح آسان
بار بار پڇڻ ۾ ايڊوب
ڪيريو قائم ٿينديون

مسئلي جو بيان

ميٽرڪس ڊانگلڊ سم جو مسئلو هڪ چورس ميٽرڪس انٽيگرس ڏني وئي آهي. اسان کي انهي جي جزن ۾ موجود سڀني عنصرن جي اچ وڃ جو حساب ڏيڻو پوندو يعني بنيادي ترڪيب سان گڏ عنصرن ۽ ثانوي درجي تي. هر عنصر صرف هڪ ڀيرو ڳڻپ ٿيڻ گهرجي.

مثال

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

وضاحت:

ديوانيل مجموعو: 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

وضاحت:

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

چرچو

ميٽرڪس ڊائجونل سم ليوٽ ڪوڊ حل

ڏنل چورس ميٽرڪس ۾ اسان کي صرف ديگرن عنصرن کي شامل ڪرڻ ۽ ان جي رقم واپس ڪرڻ آهي.
اچو ته ڏسو ته ميٽرانز ۾ ترچيل عناصر لاءِ ڇا نمونو هوندا. پهرين جيڪڏهن اسان پرائمري ڊگرون تي ڏسون ٿا ، ان جو پهريون عنصر انڊيڪس I = 0 ، j = 0 تي آهي ۽ ايندڙ عنصر (i + 1 ، j + 1) تي آهي. ساڳي طرح آخري عنصر انڊيڪس تي هوندو (n-1 ، n-1) جتي n ڏنل چوڪ ميٽرڪس جي چوڻي آهي. ھن ڇڪيلھيءَ تي س indو اشو ھتي آھي
تنهنڪري اسان هن دائري تي هڪ لوپ ۾ ٻيهر ورجائي سگهو ٿا.

1. ابتڙ i = 0 ۽ j = 0.
2. اي لوپ هلائڻ دوران آئون
3. موجوده عنصر شامل ڪريو. واڌ ۽ I ٻئي طرفان 1.

ھاڻي ڏسندا ثانوي ڊگريءَ لاءِ. پهرين قطار جو عنصر اول آھي = = ، j = n-0. اڳيون عنصر (i + 1.j-1) تي آهي۔ ساڳي طرح آخري عنصر آھي (n-1،1,0).
تنهنڪري اسان هن دائري ۾ لوپ ۾ ٻيهر ورجائي سگهو ٿا.

1. ابتڙ i = 0 ۽ j = n-1.
2. اي لوپ هلائڻ دوران آئون = 0.
3. موجوده عنصر کي شامل ڪريو (جيڪڏهن اهو ابتدائي طول و عرض تي ڪوڙ نه هجي ، يعني i == j). 1 پاران واڌارو ۽ 1 طرفان گهٽتائي ج.

آخرڪار آپريشن کانپوءِ رقم واپس ورتم.

تي عملدرآمد

C ++ پروگرام لاءِ Matrix Diagonal Sum Leetcode Solution

#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

ميٽرڪس ڊائجونل سم لٽ ڪوڊ جو حل لاءِ پيچيدگي وارو تجزيو

وقت جي پيچيدگي

اي (اين): هتي اين چورس ميٽرڪس جي سائيز آهي N ^ 2 عناصر. جيئن ته اسان رڳو ٻن diاڙهن وارن عنصرن تي لنگهي رهيا آهيون ، وقت جي پيچيدگي ظاهر ڪيل عناصر جي تعداد جي برابر ٿي ويندي (2 * N) ، يعني O (N).

خلائي پيچيدگي 

اي (1): هتي خلائي پيچيدگي مستقل آهي جيئن اسان ڪا به اضافي يادگيري استعمال نه ڪري رهيا آهيون.