国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Leetcode 1572.矩陣對角線元素之和

這篇具有很好參考價值的文章主要介紹了Leetcode 1572.矩陣對角線元素之和。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Leetcode 1572.矩陣對角線元素之和,【Letcode】每日一題,算法,leetcode,C++,java

給你一個正方形矩陣?mat,請你返回矩陣對角線元素的和。

請你返回在矩陣主對角線上的元素和副對角線上且不在主對角線上元素的和。

示例? 1:

Leetcode 1572.矩陣對角線元素之和,【Letcode】每日一題,算法,leetcode,C++,java

輸入:mat = [[1,2,3],
?           [4,5,6],
?           [7,8,9]]
輸出:25
解釋:對角線的和為:1 + 5 + 9 + 3 + 7 = 25
請注意,元素 mat[1][1] = 5 只會被計算一次。

示例? 2:

輸入:mat = [[1,1,1,1],
?           [1,1,1,1],
?           [1,1,1,1],
?           [1,1,1,1]]
輸出:8

示例 3:

輸入:mat = [[5]]
輸出:5

提示:

  • n == mat.length == mat[i].length
  • 1 <= n <= 100
  • 1 <= mat[i][j] <= 100

通過次數(shù)

63.3K

提交次數(shù)

75.9K

通過率

83.3%

一、信息

1.給一個正方型矩陣mat

2.返回矩陣對角線元素的和

二、分析

條件1和條件2:告訴我此次的目的

問題1:該如何求和呢

根據(jù)我的思考步驟

第一步 觀察在矩陣中對角線元素的下標(biāo)特征

通過觀察我發(fā)現(xiàn)主對角線上數(shù)組元素的下標(biāo)都滿足i=j

副對角線都滿足(n-1,0)(0,n-1)即關(guān)于主對角線對稱,我覺得我該回去修一下線性代數(shù)了。

第二步 我們通過for循環(huán)實現(xiàn)累加,if選擇語句結(jié)構(gòu)來篩選。

問題出現(xiàn)1:對了題目并沒有說矩陣是幾×幾的矩陣所以還得測算矩陣的大小

問題出現(xiàn)該如何測算矩陣的大小

已知測算矩陣長度的是length函數(shù)。

答案:

Leetcode答案:

int n = mat.size(), sum = 0;

問題出現(xiàn)2:根據(jù)題目我們不難發(fā)現(xiàn)不僅我們要計算該二維數(shù)組的大小還要開辟動態(tài)的空間,這在C++該怎么辦呢?

很簡答其實用vector即可,如果不記得可以看文章(知識不足的地方)

不知道陷入了停滯

我的答案:

我的答案:

首先我們可以分析這個問題如下:

1. **思考過程**:
? ?- 我們需要計算主對角線和副對角線上的元素和。主對角線上的元素位置是`mat[i][i]`,副對角線上的元素位置是`mat[i][n-1-i]`。
? ?- 如果矩陣的尺寸是奇數(shù),則中心元素會被計算兩次,我們需要減去一次。
? ?
2. **分析過程**:
? ?- 我們可以通過一個循環(huán)從 0 到 n-1 來遍歷所有的行(或列),然后計算對角線元素的和。
? ?- 如果 n 是奇數(shù),我們減去一次`mat[n/2][n/2]`。

現(xiàn)在我們可以將這個邏輯實現(xiàn)為 C、C++ 和 Java 程序:

### C 語言實現(xiàn)

#include <stdio.h>

int diagonalSum(int** mat, int matSize, int* matColSize){
? ? int sum = 0;
? ? for(int i = 0; i < matSize; i++){
? ? ? ? sum += mat[i][i] + mat[i][matSize - 1 - i];
? ? }
? ? if(matSize % 2 == 1){
? ? ? ? sum -= mat[matSize / 2][matSize / 2];
? ? }
? ? return sum;
}

int main() {
? ? int mat1[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}};
? ? int* mat1_ptr[3] = {mat1[0], mat1[1], mat1[2]};
? ? printf("%d\n", diagonalSum(mat1_ptr, 3, NULL)); // Output: 25
? ? return 0;
}

### C++ 語言實現(xiàn)

#include <vector>
#include <iostream>

int diagonalSum(std::vector<std::vector<int>>& mat) {
? ? int sum = 0;
? ? int n = mat.size();
? ? for(int i = 0; i < n; i++) {
? ? ? ? sum += mat[i][i] + mat[i][n - 1 - i];
? ? }
? ? if(n % 2 == 1) {
? ? ? ? sum -= mat[n / 2][n / 2];
? ? }
? ? return sum;
}

int main() {
? ? std::vector<std::vector<int>> mat1 = {{1,2,3}, {4,5,6}, {7,8,9}};
? ? std::cout << diagonalSum(mat1) << std::endl; // Output: 25
? ? return 0;
}

### Java 語言實現(xiàn)

public class Main {
? ? public static int diagonalSum(int[][] mat) {
? ? ? ? int sum = 0;
? ? ? ? int n = mat.length;
? ? ? ? for(int i = 0; i < n; i++) {
? ? ? ? ? ? sum += mat[i][i] + mat[i][n - 1 - i];
? ? ? ? }
? ? ? ? if(n % 2 == 1) {
? ? ? ? ? ? sum -= mat[n / 2][n / 2];
? ? ? ? }
? ? ? ? return sum;
? ? }

? ? public static void main(String[] args) {
? ? ? ? int[][] mat1 = {{1,2,3}, {4,5,6}, {7,8,9}};
? ? ? ? System.out.println(diagonalSum(mat1)); // Output: 25
? ? }
}

每種語言的實現(xiàn)都遵循了我們的原始分析和設(shè)計,結(jié)合了相應(yīng)語言的特性和語法來實現(xiàn)目標(biāo)功能。

Leetcode題解:

方法一:遍歷矩陣 思路與算法

我們知道矩陣中某個位置 (i,j)(i,j)(i,j) 處于對角線上,則一定滿足下列條件之一:

i=ji = ji=j;
i+j=n?1i + j = n - 1i+j=n?1;
根據(jù)上述結(jié)論,我們可以遍歷整個矩陣,如果當(dāng)前坐標(biāo) (i,j)(i, j)(i,j) 滿足 i=ji = ji=j 或者 i+j=n?1i + j = n - 1i+j=n?1 則表示該位置一定在對角線上,則把當(dāng)前的數(shù)字加入到答案之中。

class Solution {
public:
    int diagonalSum(vector<vector<int>>& mat) {
        int n = mat.size(), sum = 0;
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < n; ++j) {
                if (i == j || i + j == n - 1) {
                    sum += mat[i][j];
                }
            }
        }
        return sum;
    }
};

C:

int diagonalSum(int** mat, int matSize, int* matColSize) {
    int n = matSize, sum = 0;
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            if (i == j || i + j == n - 1) {
                sum += mat[i][j];
            }
        }
    }
    return sum;
}

JAVA:

class Solution {
    public int diagonalSum(int[][] mat) {
        int n = mat.length, sum = 0;
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < n; ++j) {
                if (i == j || i + j == n - 1) {
                    sum += mat[i][j];
                }
            }
        }
        return sum;
    }
}

?

方法二:枚舉對角線元素 思路與算法

逐行遍歷,記當(dāng)前的行號為 iii,則當(dāng)前行中處于對角線的元素為: 坐標(biāo) (i,i)(i, i)(i,i) 和坐標(biāo) (i,n?i?1)(i, n - i - 1)(i,n?i?1),因此我們把 (i,i)(i, i)(i,i) 與 (i,n?i?1)(i, n - i - 1)(i,n?i?1) 處的數(shù)字加入到答案中。 如果 nnn 是奇數(shù)的話,則主對角線與副對角線存在交點 (?n2?,?n2?)(\lfloor \dfrac{n}{2} \rfloor,\lfloor \dfrac{n}{2} \rfloor)(??
2
n
?
??,??
2
n
?
??),該點會被計算兩次。所以當(dāng) nnn 為奇數(shù)的時候,需要減掉交點處的值。

C++:?

class Solution {
public:
    int diagonalSum(vector<vector<int>>& mat) {
        int n = mat.size(), sum = 0, mid = n / 2;
        for (int i = 0; i < n; ++i) {
            sum += mat[i][i] + mat[i][n - 1 - i];
        }
        return sum - mat[mid][mid] * (n & 1);
    }
};

總結(jié):

從這道題目中,我們可以學(xué)到以下幾點:

1. **數(shù)組索引的應(yīng)用**:該題目教會我們?nèi)绾卫脭?shù)組索引來找到主對角線和副對角線的元素。這對于深入理解數(shù)組索引和二維數(shù)組非常有幫助。

2. **循環(huán)的優(yōu)化**:我們可以通過仔細設(shè)計循環(huán)來減少不必要的計算。例如,方法二比方法一更優(yōu),因為它避免了遍歷整個數(shù)組,而是只關(guān)注于對角線元素。

3. **條件運算符的使用**:該題目展示了如何使用條件運算符(如`&`用于檢測奇偶性)來簡化代碼和減少計算。

4. **復(fù)雜度分析**:通過比較兩種方法,我們可以學(xué)習(xí)到如何通過減少循環(huán)次數(shù)和減少重復(fù)計算來降低算法的時間復(fù)雜度。

5. **編程語言的特性**:通過用多種編程語言(C, C++ 和 Java)來解這個問題,我們可以學(xué)習(xí)和比較不同語言中數(shù)組和循環(huán)結(jié)構(gòu)的不同實現(xiàn)和語法。

6. **數(shù)學(xué)應(yīng)用在編程中**:這個問題也是一個很好的例子,展示了數(shù)學(xué)(特別是線性代數(shù))在編程和算法設(shè)計中的應(yīng)用。

7. **代碼測試與調(diào)試**:實現(xiàn)代碼后,我們可以創(chuàng)建多種測試用例來驗證代碼的正確性和效率,從而提高我們的測試和調(diào)試技能。

8. **問題解決技能的培養(yǎng)**:整體來說,解決這種問題可以幫助我們培養(yǎng)分析問題和找到有效解決方案的技能。

Leetcode 1572.矩陣對角線元素之和,【Letcode】每日一題,算法,leetcode,C++,java文章來源地址http://www.zghlxwxcb.cn/news/detail-695837.html

到了這里,關(guān)于Leetcode 1572.矩陣對角線元素之和的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • LeetCode_03Java_1572. 矩陣對角線元素的和

    LeetCode_03Java_1572. 矩陣對角線元素的和

    給你一個正方形矩陣 mat,請你返回矩陣對角線元素的和。 請你返回在矩陣主對角線上的元素和副對角線上且不在主對角線上元素的和。 示例二 示例三 代碼實現(xiàn)

    2024年02月13日
    瀏覽(24)
  • 【1572. 矩陣對角線元素的和】

    【1572. 矩陣對角線元素的和】

    來源:力扣(LeetCode) 描述: 給你一個正方形矩陣 mat ,請你返回矩陣對角線元素的和。 請你返回在矩陣主對角線上的元素和副對角線上且不在主對角線上元素的和。 示例 1: 示例 2: 示例 3: 提示: n == mat.length == mat[i].length 1 = n = 100 1 = mat[i][j] = 100 方法一:遍歷矩陣 思路

    2024年02月12日
    瀏覽(14)
  • 1572. 矩陣對角線元素的和

    1572. 矩陣對角線元素的和

    給你一個正方形矩陣 mat,請你返回矩陣對角線元素的和。 請你返回在矩陣主對角線上的元素和副對角線上且不在主對角線上元素的和。 同時求對角線和副對角線上元素的和再減去重合的元素

    2024年02月13日
    瀏覽(20)
  • 【每日一題】1572. 矩陣對角線元素的和

    【每日一題】1572. 矩陣對角線元素的和

    給你一個正方形矩陣 mat,請你返回矩陣對角線元素的和。 請你返回在矩陣主對角線上的元素和副對角線上且不在主對角線上元素的和。 示例 1: 示例 2: 示例 3: 提示: n == mat.length == mat[i].length 1 = n = 100 1 = mat[i][j] = 100 思路:主對角線i=j,副對角線i+j=n-1。

    2024年02月13日
    瀏覽(26)
  • 【每日一題Day292】LC1572矩陣對角線元素的和 模擬

    思路 簡單模擬,主對角線的元素橫縱坐標(biāo)相等,副對角線的元素橫縱坐標(biāo)相加為n-1,注意避免重復(fù)計算 實現(xiàn) 復(fù)雜度 時間復(fù)雜度: O ( log ? n ) mathcal{O}(log n) O ( lo g n ) 空間復(fù)雜度: O ( 1 ) mathcal{O}(1) O ( 1 )

    2024年02月13日
    瀏覽(20)
  • 【力扣每日一題】1572. 矩陣對角線元素的和 & 8.11打卡

    【力扣每日一題】1572. 矩陣對角線元素的和 & 8.11打卡

    1572. 矩陣對角線元素的和 難度: 簡單 描述: 給你一個正方形矩陣 mat,請你返回矩陣對角線元素的和。 請你返回在矩陣主對角線上的元素和副對角線上且不在主對角線上元素的和。 返回合并后的二叉樹。 注意: 合并過程必須從兩個樹的根節(jié)點開始。 示例 1: 輸入:mat = [

    2024年02月12日
    瀏覽(21)
  • C創(chuàng)建一個4x4的矩陣,顯示該矩陣。求該矩陣的外圍元素之和、主對角線元素之和以及副對角線元素之和。

    ????????編寫程序,創(chuàng)建一個4x4的矩陣,矩陣的值為{{1,2,4,5},{6,7,8,9},{10,11,12,13},{14,15,16,17}},顯示該矩陣。求該矩陣的外圍元素之和、主對角線元素之和以及副對角線元素之和。 ????????求三類元素的和,可以定義3 個不同的和變量,在遍歷數(shù)組元素的循環(huán)中通過三次條件

    2024年02月11日
    瀏覽(26)
  • 輸入一個n×n的矩陣,分別計算該矩陣主對角線元素與副對角線元素之和。

    輸入格式: 輸入包含n + 1行: 第一行為一個正整數(shù)n(1 = n = 10)。 第二行到第n + 1行,每行有n個整數(shù),鄰近兩數(shù)之間用一個空格隔開。 輸出格式: 兩數(shù)之間用一個空格隔開。 輸入樣例: 4 2 3 4 1 5 6 2 1 7 1 8 3 1 6 1 1 輸出樣例: 17 5

    2024年02月11日
    瀏覽(25)
  • 求一個3*3矩陣對角線元素之和

    求一個3*3矩陣對角線元素之和

    #includestdio.h #includestring.h int main() { ?? ?int m, n, j, k,sum=0; ?? ?int a[10][10]; ?? ?for (m = 0; m 3; m++) ?? ?{ ?? ??? ?for (n = 0; n 3; n++) ?? ??? ?{ ?? ??? ??? ?scanf(\\\"%d\\\", a[m][n]); ?? ??? ?} ?? ?} ?? ?for (m = 0; m 3; m++) ?? ?{ ?? ??? ?for (n = 0; n 3; n++) ?? ??? ?{ ?? ??? ??

    2024年02月03日
    瀏覽(24)
  • 【證明】矩陣特征值之和等于主對角線元素之和

    性質(zhì) 1 設(shè) n n n 階矩陣 A = ( a i j ) boldsymbol{A} = (a_{ij}) A = ( a ij ? ) 的特征值為 λ 1 , λ 2 , ? ? , λ n lambda_1,lambda_2,cdots,lambda_n λ 1 ? , λ 2 ? , ? , λ n ? ,則 λ 1 + λ 2 + ? + λ n = a 11 + a 22 + ? + a n n lambda_1 + lambda_2 + cdots + lambda_n = a_{11} + a_{22} + cdots + a_{nn} λ 1 ? + λ 2 ?

    2024年02月04日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包