java数据结构与算法刷题-----LeetCode566. 重塑矩阵

这篇具有很好参考价值的文章主要介绍了java数据结构与算法刷题-----LeetCode566. 重塑矩阵。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846

java数据结构与算法刷题-----LeetCode566. 重塑矩阵,算法,java,矩阵,算法,leetcode

1. 法一,下标填充

代码:时间复杂度O(r*c).除题目要求外,算法本身没有需要额外空间,空间复杂度O(1)

java数据结构与算法刷题-----LeetCode566. 重塑矩阵,算法,java,矩阵,算法,leetcode

class Solution {
    public int[][] matrixReshape(int[][] mat, int r, int c) {
        int matR = mat.length,matC = mat[0].length;//获取原矩阵的行和列数
        if(r*c != matR*matC) return mat;//如果不合理,直接返回原始矩阵
        int[][] ans = new int[r][c];//如果合理,创建需要重塑的矩阵容器
        int ansI = 0, ansJ = 0;//重塑矩阵专用的两个下标,代表行和列
        for(int i = 0;i<matR;i++){//依次遍历原矩阵元素,按行遍历
            for(int j = 0;j<matC;j++){//依次从左到右遍历原矩阵元素
                ans[ansI][ansJ] = mat[i][j];//将其放到重塑矩阵
                if(ansJ==c-1){//如果重塑矩阵当前行放满了
                    ansI++;//转到下一行
                    ansJ = 0;//转到第一列
                }else ansJ++;//如果重塑矩阵当前行没放满,去往当前行下一列(下一个位置放)
            }
        }
        return ans;
    }
}

2. 法二:数学除法和取余

java数据结构与算法刷题-----LeetCode566. 重塑矩阵,算法,java,矩阵,算法,leetcode

  1. 从0开始算,一个3列n行矩阵中,每行就有3个元素,我们从头开始数,第15个元素,在第几行?当然是15/3=5
  2. 知道是第5行,那么在第5行的第几列呢?当然是让它15%3 = 0; 也就是放在第0个位置,也就是[5][0]位置
  3. 如果我们将其放到4列n行矩阵中,每行有4个元素,从头开始算,第15个元素在第几行?当然是15/4 = 3
  4. 第几列呢?15%4 = 3. 也就是[3][3]位置
代码:时间复杂度O(r*c).除题目要求外,算法本身没有需要额外空间,空间复杂度O(1)

java数据结构与算法刷题-----LeetCode566. 重塑矩阵,算法,java,矩阵,算法,leetcode文章来源地址https://www.toymoban.com/news/detail-810722.html

class Solution {
    //从0开始算,一个3列n行矩阵中,每行就有3个元素,我们从头开始数,第15个元素,在第几行?当然是15/3=5
    //知道是第5行,那么在第5行的第几列呢?当然是让它15%3 = 0; 也就是放在第0个位置,也就是[5][0]位置
    //如果我们将其放到4列n行矩阵中,每行有4个元素,从头开始算,第15个元素在第几行?当然是15/4 = 3
    //第几列呢?15%4 = 3. 也就是[3][3]位置
    public int[][] matrixReshape(int[][] mat, int r, int c) {
        int matR = mat.length,matC = mat[0].length;//获取原矩阵的行和列数
        if(r*c != matR*matC) return mat;//如果不合理,直接返回原始矩阵
        int[][] ans = new int[r][c];//如果合理,创建需要重塑的矩阵容器
        //利用除法和取余,获取每个元素应该在的位置
        for(int i = 0; i< matR*matC;i++) ans[i/c][i%c] = mat[i/matC][i%matC];
        return ans;
    }
}

到了这里,关于java数据结构与算法刷题-----LeetCode566. 重塑矩阵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java数据结构与算法刷题-----LeetCode240. 搜索二维矩阵 II

    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完): https://blog.csdn.net/grd_java/article/details/123063846 解题思路 法一:把整个数组遍历一遍,时间复杂度O(m*n) 法二:每一行用二分搜索,那么时间复杂度就是O(m * l o g 2 n log_2{n} l o g

    2024年01月22日
    浏览(48)
  • java数据结构与算法刷题-----LeetCode209. 长度最小的子数组

    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完): https://blog.csdn.net/grd_java/article/details/123063846 解题思路 代码:时间复杂度O(n).空间复杂度O(1)

    2024年01月21日
    浏览(33)
  • java数据结构与算法刷题-----LeetCode96. 不同的二叉搜索树

    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完): https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难,但它就是固定套路而已。其实动态规划只不过是将多余的步骤,提前放到dp数组中(就是一个数组,只

    2024年01月21日
    浏览(45)
  • java数据结构与算法刷题-----LeetCode378. 有序矩阵中第 K 小的元素

    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完): https://blog.csdn.net/grd_java/article/details/123063846 解题思路 已知矩阵相对有序,可以用二分搜索,不过和一维数组排序不同,这是二维的 每一行都递增,每一列也是递增,所以每

    2024年01月23日
    浏览(41)
  • java数据结构与算法刷题-----LeetCode1091. 二进制矩阵中的最短路径

    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完): https://blog.csdn.net/grd_java/article/details/123063846 双分裂蛇:是求二维表中从起点到终点的经典思路(也是求无权图的最短路径问题的经典解法)。创建两条分裂蛇,分别从起点和

    2024年04月26日
    浏览(30)
  • 数据结构算法leetcode刷题练习(1)

    给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标

    2023年04月24日
    浏览(38)
  • 数组练习 Leetcode 566.重塑矩阵

    在 MATLAB 中,有一个非常有用的函数  reshape  ,它可以将一个  m x n  矩阵重塑为另一个大小不同( r x c )的新矩阵,但保留其原始数据。 给你一个由二维数组  mat  表示的  m x n  矩阵,以及两个正整数  r  和  c  ,分别表示想要的重构的矩阵的行数和列数。 重构后的矩

    2024年01月19日
    浏览(35)
  • 【LeetCode每日一题】——566.重塑矩阵

    矩阵 简单 566.重塑矩阵 在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。 给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。 重构后

    2024年02月14日
    浏览(33)
  • ( 数组和矩阵) 566. 重塑矩阵 ——【Leetcode每日一题】

    难度:简单 在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同( r x c )的新矩阵,但保留其原始数据。 给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。 重构后的矩阵需要

    2024年02月07日
    浏览(28)
  • LeetCode 刷题 数据结构 数组 485 最大连续1的个数

    给定一个二进制数组  nums  , 计算其中最大连续  1  的个数。 示例 1: 示例 2: 提示: 1 = nums.length = 105 nums[i]  不是  0  就是  1.   参看bilibli视频-up主 爱学习的饲养员,讲解的很清晰。 手把手带你刷Leetcode力扣|各个击破数据结构和算法|大厂面试必备技能【已完结】-

    2024年02月15日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包