JavaScript 程式高效計算矩陣對角線之和


我們將用 JavaScript 編寫一個程式,高效地計算矩陣對角線的和。為此,我們將使用迴圈結構遍歷矩陣,並新增位於對應於對角線位置的元素。透過利用矩陣的數學特性,我們可以最大限度地減少計算對角線之和所需的計算量。透過這種方法,我們將能夠以計算高效的方式處理各種尺寸的矩陣。

方法

  • 要計算矩陣的對角線之和,我們需要將主對角線(左上到右下)和副對角線(右上到左下)上的元素值加起來。

  • 可以使用雙迴圈方法,其中一個迴圈遍歷行,另一個迴圈遍歷列以訪問對角線上的元素。

  • 我們可以保留兩個變數分別儲存主對角線和副對角線上元素的和。

  • 要訪問主對角線上的元素,我們需要將當前的行索引和列索引相加,而對於副對角線,我們需要從行索引中減去列索引。

  • 最後,我們將這兩個變數的和作為結果返回,這將給出矩陣兩個對角線上元素的和。

示例

這是一個高效計算矩陣對角線之和的 JavaScript 程式示例 -

function diagonalSum(matrix) {
   let sum = 0;
   let n = matrix.length;
    
   for (let i = 0; i < n; i++) {
      sum += matrix[i][i];
      sum += matrix[i][n - i - 1];
   }
     
   if (n % 2 !== 0) {
      let mid = Math.floor(n / 2);
      sum -= matrix[mid][mid];
   }
     
   return sum;
}
const matrix = [[1, 2, 3],[4, 5, 6], [7, 8, 9]];
console.log(diagonalSum(matrix));

解釋

  • 初始化一個變數sum來儲存對角線的和,以及一個變數n來儲存矩陣的行數。

  • 使用 for 迴圈遍歷矩陣,將對角線的數值加到sum中。對於每次迭代 i,我們新增主對角線matrix[i][i]和反對角線matrix[i][n - i - 1]的值。

  • 如果矩陣的行數為奇數,我們將減去中間值matrix[mid][mid](其中mid是中間行索引,使用Math.floor(n / 2))計算),因為它會被新增兩次。

  • 返回sum的值。

該演算法的時間複雜度為O(n),使其成為計算矩陣對角線之和的高效解決方案。

更新於: 2023年3月13日

265 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.