题目的链接在这里:https://leetcode-cn.com/problems/reshape-the-matrix/
题目大意
在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。
重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。
如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。
一、示意图
二、解题思路
//这里还有个操作是 如果给定的操作不可行的话 那就返回原数组
//可以直接用队列这个先进先出的数据结构吧 然后可以直接进行一些判断
队列
代码如下:
class Solution {
public int[][] matrixReshape(int[][] mat, int r, int c) {
//通过r和c来重新设置这个二维数组
int[][]result=new int[r][c];
//这里还有个操作是 如果给定的操作不可行的话 那就返回原数组
//可以直接用队列这个先进先出的数据结构吧 然后可以直接进行一些判断
Queue<Integer> queue=new LinkedList<>();
//然后开始全部都进队列 并从行开始排序
for(int i=0;i<mat.length;i++){
for(int j=0;j<mat[0].length;j++){
queue.add(mat[i][j]);
}
}
//这里就全都进队列了 并且是可以进行判断的
if(queue.size()!=r*c){
//说明这个匹配不了
return mat;
}
//如果匹配的了的话 就进行输出
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
//这里应该直接删除了吧
result[i][j]=queue.poll();
}
}
return result;
}
}