leetcode566. Reshape the Matrix
来源:互联网 发布:quick是什么软件 编辑:程序博客网 时间:2024/05/23 00:09
566. Reshape the Matrix
In MATLAB, there is a very useful function called ‘reshape’, which can reshape a matrix into a new one with different size but keep its original data.
You’re given a matrix represented by a two-dimensional array, and two positive integers r and c representing the row number and column number of the wanted reshaped matrix, respectively.
The reshaped matrix need to be filled with all the elements of the original matrix in the same row-traversing order as they were.
If the ‘reshape’ operation with given parameters is possible and legal, output the new reshaped matrix; Otherwise, output the original matrix.
Example 1:Input: nums = [[1,2], [3,4]]r = 1, c = 4Output: [[1,2,3,4]]Explanation:The row-traversing of nums is [1,2,3,4]. The new reshaped matrix is a 1 * 4 matrix, fill it row by row by using the previous list.Example 2:Input: nums = [[1,2], [3,4]]r = 2, c = 4Output: [[1,2], [3,4]]
Explanation:
There is no way to reshape a 2 * 2 matrix to a 2 * 4 matrix. So output the original matrix.
Note:
The height and width of the given matrix is in range [1, 100].
The given r and c are all positive.
解法
第几个元素 / 列数 是 所在的行数,% 列数 是 所在的列数。
public class Solution { public int[][] matrixReshape(int[][] nums, int r, int c) { if (nums == null || nums.length == 0) { return null; } if (nums[0] == null || nums[0].length == 0) { return null; } int x = nums.length; int y = nums[0].length; int len = x * y; if (len != r * c) { return nums; } int[][] reshape = new int[r][c]; for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { int temp = i * c + j; int position_x = temp / y; int position_y = temp % y; reshape[i][j] = nums[position_x][position_y]; } } return reshape; }}
解法二
解法一的优化版本
public class Solution { public int[][] matrixReshape(int[][] nums, int r, int c) { if (nums == null || nums.length == 0 || r * c != nums.length * nums[0].length) { return nums; } if (nums[0] == null || nums[0].length == 0) { return nums; } int[][] reshape = new int[r][c]; int count = 0; for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { reshape[i][j] = nums[count / nums[0].length][count % nums[0].length]; count++; } } return reshape; }}
- LeetCode566. Reshape the Matrix
- LeetCode566. Reshape the Matrix
- leetcode566. Reshape the Matrix
- leetcode566. Reshape the Matrix
- Leetcode566. Reshape the Matrix
- Reshape the Matrix---LeetCode566
- python--leetcode566. Reshape the Matrix
- 19.leetCode566:Reshape the Matrix
- LeetCode566——Reshape the Matrix
- LeetCode566:reshape matrix 解答
- Reshape the Matrix
- 566. Reshape the Matrix
- 566.Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- Reshape the Matrix
- 566. Reshape the Matrix
- 图形的保存和重绘
- Xcode 8+安装Alcatraz插件管理器
- Java注释@interface的用法
- linux 免密登陆
- EasyUi日期控件datebox设置,只显示年月,也只能选择年月
- leetcode566. Reshape the Matrix
- 改变对话框和控件的背景及文本颜色
- Windows下 WebStorm 配置使用SVN
- SDUT-1149 计算题
- Linux服务管理
- 绘图控制
- Linux下(以RedHat为范本)添加开机自启动脚本有两种方法
- CSS从基础到高级
- IO