🐙

100日アルゴリズム[10日目・matrix]

2024/03/28に公開

問題

https://leetcode.com/problems/matrix-diagonal-sum/

diagonal matrixの和を調べる。

回答

function diagonalSum(mat: number[][]): number {
    let primaryValue:number = 0;
    let secondaryValue:number = 0;
    let centerElement:number = 0;
    
    primaryValue += mat[0][0];
    if (mat.length == 1) return primaryValue

    for (let i:number = 1; i < mat.length; i++) {
        primaryValue += mat[i][i]
    }

    for (let i:number = 0; i < mat.length; i++)  {
        secondaryValue += mat[i][mat.length -1 - i]
    }

    if (mat.length % 2 !== 0) {
        const centerValue:number = (mat.length -1) / 2;
        centerElement = mat[centerValue][centerValue]
    }

    return primaryValue + secondaryValue - centerElement;
};

右対角線と左対角線の各々の合計の行列の要素の値を足し合わせて返す。ただし、行列の長さが奇数の場合、行と列の中央の値が重複してしまうので、それを合計の値から取り除く。

Discussion