矩阵旋转

 

没什么高端算法..注意下标,思维清晰就可以了。

 


//矩阵顺时针旋转90度,如果是in-place,则矩阵只能为方阵
//如果可以利用其它存储空间,则矩阵可以是m*n的,转换之后为n*m的
//i'(转换后行) = j(原列); j'(转换后列)= m-1-i(原行);
//我们这里写就地逆置的
public class ClockWiseTransferMatrixInplace {
	public void transfer(int a[][]){
		if(a == null||a[0]== null) return ;
		if(a.length!= a[0].length) return ;
		int n = a.length;
		
		transfer(a,0,n-1,n);
	}
	
	public void transfer(int a[][],int start,int end,int n){
		if(start>=end) return;
		for(int i = start;i<=end-1;i++){
			int tempa = a[i][start];
			int ti = start;
			int tj = n-1-i;
			while(ti!=i||tj!=start){
				int tempb = a[ti][tj];
				a[ti][tj] = tempa;
				tempa = tempb;
				int k = ti;
				ti = tj;
				tj = n-1-k;
			}
			a[i][start] = tempa;//不要忘记了!
		}
	    transfer(a,start+1,end-1,n);
	}
	

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值