மேட்ரிக்ஸ் மூலைவிட்ட தொகை லீட்கோட் தீர்வு


சிரமம் நிலை எளிதாக
அடிக்கடி கேட்கப்படுகிறது அடோப்
அணி மேட்ரிக்ஸ்

சிக்கல் அறிக்கை

மேட்ரிக்ஸ் மூலைவிட்ட தொகை சிக்கலில் ஒரு சதுரம் அணி முழு எண்கள் வழங்கப்படுகின்றன. அதன் மூலைவிட்டங்களில் இருக்கும் அனைத்து உறுப்புகளின் கூட்டுத்தொகையை நாம் கணக்கிட வேண்டும், அதாவது முதன்மை மூலைவிட்டத்திலும் இரண்டாம் நிலை மூலைவிட்டத்திலும் உள்ள கூறுகள். ஒவ்வொரு உறுப்புகளையும் ஒரு முறை மட்டுமே எண்ண வேண்டும்.

உதாரணமாக

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 என்பது கொடுக்கப்பட்ட சதுர அணியின் அகலம். இந்த மூலைவிட்டத்தில் உள்ள அனைத்து குறியீடுகளும் i = j ஐக் கொண்டுள்ளன.
எனவே இந்த மூலைவிட்டத்தை ஒரு சுழற்சியில் பின்வருமாறு மீண்டும் கூறலாம்:

1. i = 0 மற்றும் j = 0 ஐ துவக்கவும்.
2. நான் ஒரு சுழற்சியை இயக்கவும்
3. தற்போதைய உறுப்பைச் சேர்க்கவும். I மற்றும் j இரண்டையும் 1 ஆல் அதிகரிக்கவும்.

இப்போது இரண்டாம் மூலைவிட்டத்தைக் காணலாம். முதல் வரிசையில் முதல் தனிமத்தின் குறியீடு i = 0, j = n-1. அடுத்த உறுப்பு (i + 1.j-1) இல் உள்ளது. இதேபோல் கடைசி உறுப்பு (n-1,0) இல் உள்ளது.
எனவே இந்த மூலைவிட்டத்தை லூப்பில் பின்வருமாறு மீண்டும் கூறலாம்:

1. i = 0 மற்றும் j = n-1 ஐ துவக்கவும்.
2. நான் ஒரு சுழற்சியை இயக்கவும் = 0.
3. தற்போதைய உறுப்பைச் சேர்க்கவும் (இது முதன்மை மூலைவிட்டத்தில் இல்லை என்றால், அதாவது. I == j). I ஐ 1 ஆகவும், j ஐ 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

மேட்ரிக்ஸ் மூலைவிட்ட தொகை லீட்கோட் தீர்வுக்கான சிக்கலான பகுப்பாய்வு

நேர சிக்கலானது

ஓ (என்): இங்கே N என்பது N ^ 2 கூறுகளைக் கொண்ட சதுர மேட்ரிக்ஸின் அளவு. நாம் இரு மூலைவிட்ட கூறுகளிலும் மட்டுமே பயணிப்பதால், நேர சிக்கலானது மூலைவிட்டங்களில் (2 * N), அதாவது O (N) இல் உள்ள உறுப்புகளின் எண்ணிக்கைக்கு சமமாக இருக்கும்.

விண்வெளி சிக்கலானது 

ஓ (1): நாம் எந்த கூடுதல் நினைவகத்தையும் பயன்படுத்தாததால் இங்கு விண்வெளி சிக்கலானது நிலையானது.