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;
        }
    }
    
  • 相关阅读:
    【Java&amp;Android开源库代码分析】のandroid-async-http の开盘
    静态库和动态库
    抽象工厂
    XXX系统发展综述(SSH+Jquery EasyUI)
    android 控制手机的体积的大小 切换音效模式
    中国误区,你还抓?
    PID教程
    setsockopt的作用
    【ThinkingInC++】66、pointer Stash的使用
    jbpm入门样例
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13703891.html
Copyright © 2011-2022 走看看