【问题标题】:Min value on main diagonal of the 2D Array二维数组主对角线上的最小值
【发布时间】:2021-08-19 12:40:25
【问题描述】:

我设法创建了一个二维数组并用我的代码自动填充它。我想在主对角线上找到最小值,但我被卡住了,不知道如何从我的代码中处理这个想法。谁能解释一下我如何才能做到这一点?我尝试过或想出的一切都没有结果..

var matrix = Array.from(Array(10), () => new Array(10));

for(i=0; i<10; i++){
    for(j=0; j<10; j++)
    matrix[i][j] = Math.floor(Math.random() * 100);
    
}


console.log(matrix);

【问题讨论】:

    标签: javascript multidimensional-array diagonal


    【解决方案1】:

    构造一个对角线的一维数组。将 Math.min 与 .apply 一起使用以查找该数组中的最小值。

    var matrix = Array.from(Array(10), () => new Array(10));
    
    for(i=0; i<10; i++){
        for(j=0; j<10; j++)
        matrix[i][j] = Math.floor(Math.random() * 100);
        
    }
    const diag = matrix.map((m, i) => m[i]);
    const min = Math.min.apply(null, diag);
    console.log(diag, "min = " + min);

    【讨论】:

    • 非常感谢!这就像一个魅力。完美解决我的问题!
    【解决方案2】:

    二维方阵(矩阵)的主对角线始终在col_index == row_index,因此您可以遍历数组以找到通过它的最小值。

    我在 sn-p 中将数组设置为 3x3 以显示更简单的情况,但您也可以将其设置为 10x10 来尝试。

    function getMinimumOfDiag(arr) {
    
     var min = Infinity;
     
     for (var i = 0; i < arr.length; i++)
      if(arr[i].length > i)
        if(arr[i][i] < min)
          min = arr[i][i]
    
     return min;
    };
    
    var matrix = Array.from(Array(3), () => new Array(3));
    
    for(i=0; i<3; i++){
      for(j=0; j<3; j++)
        matrix[i][j] = Math.floor(Math.random() * 100);    
    }
    
    console.log(matrix);
    console.log(getMinimumOfDiag(matrix));

    【讨论】:

      【解决方案3】:

      假设矩阵具有相同长度的行和列,这应该可以,

      var matrix = Array.from(Array(10), () => new Array(10));
      const matrixLength = 10;
      
      for(let i=0; i<matrixLength; i++){
          for(j=0; j<matrixLength; j++)
          matrix[i][j] = Math.floor(Math.random() * 100);
          
      }
      let minValueInDiagonal = Number.MAX_SAFE_INTEGER;
      for(let i = 0; i < matrixLength; i++) {
        minValueInDiagonal = Math.min(matrix[i][i], minValueInDiagonal);
      }
      
      console.log("Matrix is", matrix);
      console.log("Min value in diagonal is: ", minValueInDiagonal); 

      【讨论】:

        猜你喜欢
        • 2020-07-24
        • 2020-03-29
        • 1970-01-01
        • 2011-05-25
        • 2022-01-24
        • 1970-01-01
        • 2020-03-22
        • 2020-03-19
        • 2020-06-20
        相关资源
        最近更新 更多