zoukankan      html  css  js  c++  java
  • 566. 重塑矩阵(模拟)

     

     

      最容易想到的就是创建一个新的一维数组,然后遍历一遍原数组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 }
  • 相关阅读:
    获取请求IP
    Excel导入工具类兼容xls和xlsx
    Openshift 4.3环境的离线Operatorhub安装
    RHEL学习
    OpenShift Service Mesh 培训作业
    OpenId Connect认证配置
    Route Sharding in OpenShift 4.3
    OpenShift 4.3环境中创建基于Go的Operator
    Quay和Clair的集成
    Quay 基础版安装和部署
  • 原文地址:https://www.cnblogs.com/NiBosS/p/12003279.html
Copyright © 2011-2022 走看看