• LeetCode


    链接

    566. Reshape the Matrix

    题意

    给定一个矩阵和新的行数和列数。输出变形后的矩阵。

    思路

    利用给定的行数和列数构造一个二维数组,再将原矩阵中的数一个一个进行填充。

    代码

    Java 1:

    public class Solution {
        public int[][] matrixReshape(int[][] nums, int r, int c) {
            if (r * c != nums.length * nums[0].length) return nums;
            int[][] res = new int[r][c];
            int[] temp = new int[nums.length * nums[0].length];
            int count = 0;
            for (int i = 0; i < nums.length; i++) {
                for (int j = 0; j < nums[0].length; j++) {
                    temp[count++] = nums[i][j];
                }
            }
            count = 0;
            for (int i = 0; i < r; i++) {
                for (int j = 0; j < c; j++) {
                    res[i][j] = temp[count++];              
                }
            }
            return res;
        }
    }
    

    改进代码:

    public class Solution {
        public int[][] matrixReshape(int[][] nums, int r, int c) {
            int n = nums.length, m = nums[0].length, k = 0;
            if (r*c != n*m) return nums;
            int[][] res = new int[r][c];
            for (int i=0;i<r;i++) 
                for (int j=0;j<c;j++,k++) 
                    res[i][j] = nums[k/m][k%m];
            return res;
        }
    }
    
    

    思考

    第一个代码的填充确实弄复杂了一些,利用k/m和k%m可以很好解决新矩阵的行号和列号问题

  • 相关阅读:
    字体颜色和字体样式的演示
    消息的测试
    java泛型例子
    python画太阳花
    列出进程界面
    画蟒蛇
    同切圆的绘制
    IDEA 2019.3.1永久破解
    springMVC ——Controller配置方式
    SpringMVC——JSR303的数据校验Hibernate Validator方式实现
  • 原文地址:https://www.cnblogs.com/zyoung/p/6845729.html
Copyright © 2020-2023  润新知