首页 > 其他 > 详细

566. 重塑矩阵(模拟)

时间:2019-12-07 22:23:04      阅读:84      评论:0      收藏:0      [点我收藏+]

 技术分享图片

 技术分享图片

  最容易想到的就是创建一个新的一维数组,然后遍历一遍原数组nums,将其元素都按序填入新数组,最后在遍历一遍新创建的r*c的二维数组将一维数组的值按序填入.

 1 class Solution {
 2     public int[][] matrixReshape(int[][] nums, int r, int c) {
 3         if(nums.length==0||nums[0].length==0) return null;
 4         if(r*c!=nums.length*nums[0].length) return nums;
 5         int k=0,x=0; 6         int[][] res=new int[r][c];
 7         int[] temp=new int[nums.length*nums[0].length];
 8         for(int i=0;i<nums.length;i++){
 9             for(int j=0;j<nums[0].length;j++){
10                 temp[x++]=nums[i][j];
11             }
12         }
13         for(int i=0;i<r;i++){
14             for(int j=0;j<c;j++){
15                 res[i][j]=temp[k++];
16             }
17         }
18         return res;
19     }
20 }

   稍微比前面那种暴力快一点的方法

 1 class Solution {
 2     public int[][] matrixReshape(int[][] nums, int r, int c) {
 3         if(nums.length==0||nums[0].length==0) return null;
 4         if(r*c!=nums.length*nums[0].length) return nums;
 5         int k1=0,k2=0;
 6         int[][] res=new int[r][c];
 7         for(int[] ref:nums){
 8             for(int val:ref){
 9                 res[k1][k2++]=val;
10                 if(k2==c){ //一行填满,转换到下一行
11                     k1++;
12                     k2=0;
13                 }
14             }
15         }
16         return res;
17     }
18 }

 

 

 

566. 重塑矩阵(模拟)

原文:https://www.cnblogs.com/NiBosS/p/12003279.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!