青训营X豆包MarsCode 技术训练营第一课 | 豆包MarsCode AI 刷题

51 阅读3分钟

Java代码解析:小F的矩阵值调整

  1. 问题描述:小F得到了一个矩阵。如果矩阵中某一个格子的值是偶数,则该值变为它的三倍;如果是奇数,则保持不变。小F想知道调整后的矩阵是什么样子的。
  2. 代码逻辑分步解读

(一)矩阵维度获取

屏幕截图 2024-11-25 215700.png

在 Java 里,二维数组可类比为数组的数组,通过 a.length 能便捷获取矩阵(二维数组)包含的行数,这表示外层数组所拥有的子数组数量,即有多少 “行”。而 a[0].length 之所以能获取列数,是基于矩阵行列规整的特性,取出第一行(a[0])这个子数组的长度,也就等同于整个矩阵的列数,为后续遍历矩阵内各元素奠定基础。 (二)元素值调整循环逻辑

屏幕截图 2024-11-25 215803.png 这里运用双层 for 循环实现对矩阵元素的逐一遍历。外层循环以 i 作为索引变量,控制行的遍历,从第 0 行起始,直至 rows - 1 行结束,确保矩阵的每一行都能被 “光顾” 到。内层循环借助 j 索引变量,针对每行中的各列元素开展操作,从第 0 列开始,至 cols - 1 列截止。在循环体内部,利用取余运算 a[i][j] % 2 == 0 判断当前位于 i 行 j 列的元素值是否为偶数,若是偶数,便执行 a[i][j] *= 3,达成将该偶数元素值放大三倍的目标;奇数元素则因不满足条件而跳过此操作,保持原值,按此方式遍历完整矩阵,所有元素都按规则调整完毕。

(三)结果返回

return a;

经上述行列遍历与元素调整操作后,矩阵 a 中的元素已契合设定规则,直接将调整后的矩阵 a 返回,完成整个方法功能,后续在 main 方法里就能使用并验证此结果矩阵。

(四)测试验证部分

public static void main(String[] args) { System.out.println(Arrays.deepEquals(solution(new int[][]{{1, 2, 3}, {4, 5, 6}}), new int[][]{{1, 6, 3}, {12, 5, 18}})); System.out.println(Arrays.deepEquals(solution(new int[][]{{7, 8, 9}, {10, 11, 12}}), new int[][]{{7, 24, 9}, {30, 11, 36}})); System.out.println(Arrays.deepEquals(solution(new int[][]{{2, 4}, {6, 8}}), new int[][]{{6, 12}, {18, 24}})); }

3.修正后的代码

`import java.util.Arrays;

public class Main { public static int[][] solution(int[][] a) { int rows = a.length; // 获取矩阵的行数 int cols = a[0].length; // 获取矩阵的列数

    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            if (a[i][j] % 2 == 0) {
                a[i][j] *= 3;  // 如果元素是偶数,变为它的三倍
            }
        }
    }

    return a;
}

public static void main(String[] args) {
    System.out.println(Arrays.deepEquals(solution(new int[][]{{1, 2, 3}, {4, 5, 6}}), new int[][]{{1, 6, 3}, {12, 5, 18}}));
    System.out.println(Arrays.deepEquals(solution(new int[][]{{7, 8, 9}, {10, 11, 12}}), new int[][]{{7, 24, 9}, {30, 11, 36}}));
    System.out.println(Arrays.deepEquals(solution(new int[][]{{2, 4}, {6, 8}}), new int[][]{{6, 12}, {18, 24}}));
}

}`

通过这段代码,我们解决了小F的矩阵值调整,知道了调整后的矩阵是什么样子的。