leetcode[Reshape the Matrix]//待整理多种解法

本文介绍了一种矩阵重塑算法的实现方法。该算法可以将输入的矩阵按照指定的行数和列数进行重塑,并确保元素的顺序不变。文章详细解释了算法的工作原理及其实现过程。

解法一:

class Solution {
    public int[][] matrixReshape(int[][] nums, int r, int c) {
        //首先判断能不能重塑矩阵
    	if(nums.length == 0) return nums;
    	int row = nums.length;//代表原矩阵的行数
    	int col = nums[0].length;//代表原矩阵的列数,因为原二维数组代表的是矩阵,所以二维数组的第二维的长度都是相同的
    	if(row * col != r * c) return nums;
    	int[][] res = new int[r][c];
    	int count = 1;//用一个count来计数,矩阵转换后元素个数是不变的,通过count算出原数组对应的位置
    	for(int i = 0; i < res.length; i++){
    		for(int j = 0; j < res[0].length; j++){
    			//计算当前的count应该对应原数组中的哪一个数
    			//[[1,2],
    			// [3,4]]   观察这个
    			int numsI = 0;
    			int numsJ = 0;
    			if(count % col == 0){
    				numsJ = col - 1;
    				numsI = count / col - 1;
    			} else{
    				numsJ = count % col - 1;
    				numsI = count / col;
    			}
    			//System.out.println("numsI:" + numsI + "  numsJ:" + numsJ);
    			res[i][j] = nums[numsI][numsJ];
    			
    			count++;//不要忘了递增count
    		}
    	}
    	
    	return res;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值