leetcode--Algorithm--Array_Part 1 Easy- 566 Reshape the Matrix

本文详细介绍了LeetCode上的重塑矩阵问题解决方法。该问题要求实现类似Matlab中的reshape功能,即对二维数组进行重新排列。文章提供了一种通过将原数组拉直再重组的方式,并附带Java代码实现。

LeetCode Array Part 1 Easy

2017-12-28  10:01:31

566. Reshape the Matrix 重塑矩阵

https://leetcode.com/problems/reshape-the-matrix/description/

要求是 实现 Matlabe 中的 reshape函数。对二维数组大小重新分配。

 

方法:

  1. 先把原数组拉直,变成一条直线,然后再组成新的数组。

  先判断给定数组能否重塑成给定的大小,就是看两者的元素总数是否相同,直接行数乘以列数,

  然后新建一个目标大小的数组,并开始遍历,对于每个位置,先转为拉直后的一维坐标,然后再算出在原数组中的对应位置赋值过来即可。

  

 1 class Solution {
 2     public int[][] matrixReshape(int[][] nums, int r, int c) {
 3         int m = nums.length, n = nums[0].length;
 4         
 5         // 重置矩阵为任意维度 前提是矩阵里的元素总数不变
 6         if(r*c != m*n) return nums;
 7         int[][] res = new int[r][c];
 8         // core code
 9         for(int i = 0; i < r*c; i++)
10             res[i/c][i%c] = nums[i/n][i%n];
11         
12         return res;
13     }
14 }

 

  

转载于:https://www.cnblogs.com/masterSoul/p/8134260.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值