Leetcode566. 重塑矩阵
在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。
给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。
重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。
如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。
示例 1:
输入:mat = [[1,2],[3,4]], r = 1, c = 4
输出:[[1,2,3,4]]
示例 2:
输入:mat = [[1,2],[3,4]], r = 2, c = 4
输出:[[1,2],[3,4]]
提示:
m == mat.length
n == mat[i].length
1 <= m, n <= 100
-1000 <= mat[i][j] <= 1000
1 <= r, c <= 300
Python解法
from typing import List class Solution: def matrixReshape(self, mat: List[List[int]], r: int, c: int) -> List[List[int]]: m,n = len(mat),len(mat[0]) #对比重构矩阵的个数和原来矩阵的个数不一致,则返回原来的矩阵 if (m * n != r * c): return mat else: templist, mat1, count = [], [], 0 #先遍历整个list 输出子list,再从子list中遍历里面的元素,放在临时的列表中, #如果列表中个数达到了列数,则把这个list放在重构list中作为一行 for childlist in mat: for item in childlist: templist.append(item) count += 1 if (count == c): mat1.append(templist) #这边如果不清空则会把前面的临时list中的数也输出出来 count=0 templist=[] return mat1 if __name__ == '__main__': a = Solution() b = a.matrixReshape([[1, 2], [3, 4]],4,1) print(b)
java解法
public int[][] matrixReshape(int[][] nums,int r,int c){ int[][] res = new int[r][c]; if(nums.length ==0 || r*c != nums.length*nums[0].length) return nums; //建立队列 Queue<Integer> que = new LinkedList<>(); //将数组的元素放到队列中 for(int i=0;i<nums.length;i++){ for(int j=0;j<nums[0].length;j++){ que.add(nums[i][j]); } } //将队列中的元素放到指定的数组中 for(int i=0;i<r;i++){ for(int j=0;j<c;j++){ res[i][j] = que.remove(); } } return res; } }
声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/
如出现转载未声明 将追究法律责任~谢谢合作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具