美文网首页
2021.2.17每日一题

2021.2.17每日一题

作者: Yaan9 | 来源:发表于2021-02-17 10:16 被阅读0次

566. 重塑矩阵

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

输入: 
nums = 
[[1,2],
 [3,4]]
r = 1, c = 4
输出: 
[[1,2,3,4]]
解释:
行遍历nums的结果是 [1,2,3,4]。新的矩阵是 1 * 4 矩阵, 用之前的元素值一行一行填充新矩阵。

示例 2:

输入: 
nums = 
[[1,2],
 [3,4]]
r = 2, c = 4
输出: 
[[1,2],
 [3,4]]
解释:
没有办法将 2 * 2 矩阵转化为 2 * 4 矩阵。 所以输出原矩阵。

题解

题目给出的是一个m * n的二维数组,我们要将它重塑为r * c的二维数组。首先,我们将原始数组压缩为一个长度为m * n的一维数组,第x个元素和n(列数)有这样的关系:第 x 个元素在nums中对应的下标为(x / n,x % n),而在新的重塑矩阵中,对应的下标为(x/c ,x%c),直接映射即可。

    public int[][] matrixReshape(int[][] nums, int r, int c) {
        int m = nums.length;
        int n = nums[0].length;
        if (m * n != r * c) return nums;
        int[][] ans = new int[r][c];
        for (int x = 0; x < m * n; x++) {
            ans[x / c][x % c] = nums[x / n][x % n];
        }
        return ans;
    }

相关文章

  • 2021.2.17每日一题

    566. 重塑矩阵[https://leetcode-cn.com/problems/reshape-the-ma...

  • Day 4 Project 我的微信好友

    附:每日一题

  • 2021.2.17

    你爱我吗? 不爱。 那你爱谁? 谁都不爱。 自私的人真好呀!

  • 2021.2.17

    今天又是愉快的一天。 上午睡到10点了快,老公睡到8点,我比他多睡了2小时了。 晚上吃到了好吃的饭菜,东坡肉还不错...

  • 2021.2.17

    在家无聊看了星座,里面有说到我这种上升星座,通常在30岁以前想得都很简单,30岁以后才会开始考虑人生。说得挺对的,...

  • 2021.2.17

    人如果总在等待明天,就永远不会有新的开始。 我感觉心里有点乱。但也明确的知道,有些事只能靠自己。 以后的路,也只能...

  • 2021.2.17

    一切显得十分匆忙,二月的第一天休息便耗费在弥补行程困顿的休息中,初三中午到舅舅家给外公磕头送行后,初四在家休息了一...

  • 2021.2.17

    假期最后一天。 下午和妈妈带崽去邵阳学院后门新修的足球场玩。最开始,桃桃独立走了几步,但仅限于几步而已,后来就不行...

  • 2021.2.17

    忙忙碌碌一整天是真的充实 做个实验居然走了一万步 大Mix质控结果不错 爸妈哥姐小葡萄也平安到达啦 满板做完明天缓...

  • 2021.2.17

    最近发现自己有点急躁了,学习学不下去,怀疑自己能力有问题。不自信的表现算表现在脸上,自我控制能力太差。还有在工作上...

网友评论

      本文标题:2021.2.17每日一题

      本文链接:https://www.haomeiwen.com/subject/oqdixltx.html