在JavaScript中查詢矩陣中的幸運數字


在這個給定的問題陳述中,我們必須編寫一個函式,藉助Javascript來獲取矩陣中的幸運數字。因此,我們將使用Javascript的for迴圈和函式來實現此任務。

理解問題陳述

問題陳述要求我們找到給定矩陣中的幸運數字。因此,幸運數字將定義為矩陣中一個數字,它是其所在行的最小值,也是其所在列的最大值。例如,我們有一個矩陣[[3, 7], [9, 11]],在這個矩陣中,根據幸運數字的定義,幸運數字是[9]。

演算法

步驟1 - 建立一個函式,並將其命名為luckyNumbers,並在函式括號內傳遞矩陣引數。

步驟2 - 遍歷給定矩陣的每一行。

步驟3 - 查詢矩陣中每一行的最小元素及其索引。

步驟4 - 檢查最小元素的索引是否也是最小元素所在列的最大元素的索引。

步驟5 - 如果情況為真,則最小元素就是幸運數字。因此,將其儲存在一個數組中。

步驟6 - 返回幸運數字的陣列。

演算法程式碼

//Function to find the lucky number in a given matrix
function luckyNumbers(matrix) {
   const m = matrix.length;
   const n = matrix[0].length;
   const luckyNums = [];
    
   for (let i = 0; i < m; i++) {
      let minIndex = 0;
      for (let j = 1; j < n; j++) {
         if (matrix[i][j] < matrix[i][minIndex]) {
            minIndex = j;
         }
      }
      let maxIndex = 0;
      for (let k = 1; k < m; k++) {
         if (matrix[k][minIndex] > matrix[maxIndex][minIndex]) {
            maxIndex = k;
         }
      }
      if (maxIndex === i) {
         luckyNums.push(matrix[i][minIndex]);
      }
   }
    
   return luckyNums;
}
const matrix = [
   [3, 7, 8],
   [9, 11, 13],
   [15, 16, 17]
];
console.log(luckyNumbers(matrix));

複雜度

已實現函式的時間複雜度為O(m * n),其中m是矩陣的行數,n是矩陣的列數。因為我們遍歷了矩陣中的每個元素一次,以找到每一行的最小值和對應列的最大元素。程式碼的空間複雜度為O(k),其中k是矩陣中幸運數字的數量。

結論

在函式中,我們遍歷矩陣的每一行以查詢最小元素及其索引,然後檢查最小元素的索引是否也是最小元素所在列的最大元素的索引。如果條件為真,則最小元素是給定矩陣中的幸運數字。時間複雜度為O(m * n),空間複雜度為O(k),其中k是矩陣中的幸運數字。

更新於:2023年5月18日

696 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.