zoukankan      html  css  js  c++  java
  • LeetCode 566 重塑矩阵

    LeetCode 566 重塑矩阵

    问题描述:
    在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。
    给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。
    重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。
    如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。

    执行用时:2 ms, 在所有 Java 提交中击败了76.66%的用户
    内存消耗:40.1 MB, 在所有 Java 提交中击败了5.14%的用户

    class Solution {
        public int[][] matrixReshape(int[][] nums, int r, int c) {
            //矩阵不合法
            if(nums==null || nums.length==0 || nums[0].length==0) {
                return nums;
            }
            //元素数量不同
            else if(r*c!=nums.length*nums[0].length) {
                return nums;
            }
    
            //按行填充
            int[][] ans = new int[r][c];
            int rows = nums.length;
            int cols = nums[0].length;
            for(int curr=0; curr<rows*cols; curr++) {
                //元素在原矩阵中的坐标
                int oldRIdx = curr/cols;
                int oldCIdx = curr%cols;
                //元素在当前矩阵中的坐标
                int newRIdx = curr/c;
                int newCIdx = curr%c;
                //元素转移
                ans[newRIdx][newCIdx] = nums[oldRIdx][oldCIdx];
            }
    
            return ans;
        }
    }
    
  • 相关阅读:
    [Trie][并查集]JZOJ 5822 量子纠缠
    [模拟]JZOJ 5820 非法输入
    SAM模板
    [树形DP]JZOJ 5819 大逃杀
    [MST][dij]JZOJ 5818 做运动
    [暴力]JZOJ 5817 抄代码
    [概率期望][树形DP][LCA]JZOJ 5814 树
    认证组件
    注册接口
    视图家族 & 路由组件
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13703891.html
Copyright © 2011-2022 走看看