📌  相关文章
📜  第 11 天 2d 数组hackerrank 解决方案 javascript (1)

📅  最后修改于: 2023-12-03 15:11:28.427000             🧑  作者: Mango

第11天-2D数组Hackerrank解决方案-JavaScript

在Hackerrank上,2D数组是许多问题的常见主题。在JavaScript中解决这些问题可以很棘手,但也可以非常有趣。

在本教程中,我们将介绍一个常见的2D数组问题,并提供一个简单的解决方案。我们还将演示如何在JavaScript中创建和操作2D数组。

问题描述

在这个问题中,我们有一个6 x 6的2D数组,如下所示:

1 1 1 0 0 0
0 1 0 0 0 0
1 1 1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0

我们要找到所有可能的“小时钟”时的最大总和。小时钟是指一个数字2围绕在中间由1组成的3 x 3方阵。一个可能的小时钟如下所示:

1 1 1
  1
1 1 1

在上面的2D数组中,有4个这样的小时钟(有3个在行中,1个在列中)。它们分别是:

1 1 1     1 0 0     1 1 1     0 0 0
  1         0 0 0       1         0
1 1 1     1 0 0     1 1 1     0 0 0

对于每个小时钟,我们将它内部的所有数字加起来,然后返回这些数字之和的最大值。在上面的2D数组中,最大的小时钟总和是7。

解决方案

我们可以使用一个简单的嵌套循环遍历2D数组中的每个小时钟。对于每个小时钟,我们将它内部的所有数字加起来,并使用一个变量来跟踪最大总和。最后,我们返回这个最大总和。

下面是代码实现:

function hourglassSum(arr) {
    let maxSum = -Infinity;
    for(let i=0; i<4; i++) {
        for(let j=0; j<4; j++) {
            let sum = arr[i][j] + arr[i][j+1] + arr[i][j+2]
                    + arr[i+1][j+1]
                    + arr[i+2][j] + arr[i+2][j+1] + arr[i+2][j+2];
            maxSum = Math.max(maxSum, sum);
        }
    }
    return maxSum;
}

在上面的代码中,我们使用了两个for循环来遍历2D数组。在内部循环中,我们计算小时钟内部的所有数字的总和,并将其与最大总和比较。如果找到了更大的总和,则更新最大总和。

最后,我们返回最大总和。

创建2D数组

在JavaScript中,可以使用数组嵌套来创建2D数组。例如,我们可以使用以下代码创建一个2 x 2的2D数组:

let arr = [[1, 2], [3, 4]];

在上面的代码中,我们使用两个方括号来表示2D数组的行和列。

操作2D数组

JavaScript中的2D数组与其他语言中的数组非常相似。例如,我们可以使用索引来访问2D数组中的元素,如下所示:

let arr = [[1, 2], [3, 4]];
console.log(arr[0][1]); //输出2

在上面的代码中,我们使用arr [0] [1]访问2D数组中的第一个行和第二个列。

结论

在这个教程中,我们介绍了一个常见的2D数组问题,并提供了一个简单的解决方案。我们还演示了如何在JavaScript中创建和操作2D数组。

如果您在Hackerrank中遇到2D数组问题,请使用上述技术和解决方案尝试解决问题。