在 JavaScript 中查找矩阵中的幸运数字
javascriptweb developmentfront end technology
在给定的问题陈述中,我们必须借助 Javascript 编写一个函数来获取矩阵中的幸运数字。因此,我们将使用 Javascript 的 for 循环和函数来实现此任务。
理解问题陈述
问题陈述要求我们在给定的矩阵中查找幸运数字。因此,幸运数字将被定义为矩阵中的数字,它是其自身行的最小值和其列的最大值。例如,我们有一个矩阵 [ [3, 7], [9, 11] ],根据幸运数字的条件,这个矩阵中的幸运数字是 [9]。
算法
步骤 1 - 创建一个函数并将其命名为 luckyNumbers,并在函数括号内传递矩阵的参数。
步骤 2 - 遍历给定矩阵的每一行。
步骤 3 - 找到矩阵中每一行的最小元素及其索引。
步骤 4 - 检查最小项的索引是否也是最小元素所在列中最大项的索引。
步骤 5 - 如果情况属实,则最小项就是幸运数字。因此将其存储在数组中。
步骤 6 - 返回幸运数字数组。
算法代码
//函数用于在给定矩阵中查找幸运数字 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 是矩阵中的幸运数字。