leetcode的每日一题更新(Reshape the Matrix )

题目:给一个二维数组和两个数字,返回一个二维数组,第一个数字代表返回的数组的行,第二个数字代表列。

思路:刚开始想逻辑想不明白,可能是想循环一下搞定,但是不行,只能在循环外面创建两个变量来控制要返回的数组的接收,思路很清晰就是说不上来,直接附代码:

public int[][] matrixReshape(int[][] nums, int r, int c) {
        if(nums==null)return null;
        if(nums.length*nums[0].length!=r*c)return nums;
        int[] tem=new int[nums.length*nums[0].length];
        int carry=0;
        int hang=0;
        int[][] result=new int[r][c];
        for(int i=0;i<nums.length;i++){
            for(int j=0;j<nums[0].length;j++){
                result[hang][carry]=nums[i][j];
                if(carry==c-1){
                    carry=0;
                    hang++;
                    continue;
                }
                carry++;
            }
        }
        return result;
    }

看看高手的解题方法:
和我的差不多,就是用了一些取巧的办法:

public int[][] matrixReshape(int[][] nums, int r, int c) {
    int n = nums.length, m = nums[0].length;
    if (r*c != n*m) return nums;
    int[][] res = new int[r][c];
    for (int i=0;i<r*c;i++) 
        res[i/c][i%c] = nums[i/m][i%m];
    return res;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,455评论 25 708
  • 很多时候,就如一件很小的事情,真的就可以学到很多东西。 早上爬起来开始做早饭,剩下炒菜的时候已经到7点...
    潇湘妃子0514阅读 726评论 0 0
  • 今天早上,我开始收拾自己的玩具,因为妈妈的同学要到我们家来。让我意外的是尽然有一个和我差不多大的小朋友。 ...
    Cherry多多阅读 269评论 1 0
  • 她在等 等四月的花开 等五月的跋涉 等六月的闪耀 等明年 等你 等她自己
    陌遥__阅读 253评论 3 0