转圈打印矩

【题目】 给定一个整型矩阵matrix,请按照转圈的方式打印它。 例如: 1   2   3   4 5   6   7   8 9  10  11  12 13 14  15  16 打印结果为:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11, 10

【要求】 额外空间复杂度为O(1)。

import java.util.*;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//设定行数和列数
		int row=4,low=4;
		int[][] arr= new int[row][low];
		int count=1;
		for(int i=0;i<row;i++){//创建一个矩阵
			for(int j=0;j<low;j++){
				arr[i][j] = count++;
			}
		}
		
		int up=0,down=arr.length-1,left=0,right=arr[0].length-1;//模拟范围
		//我的计划是 分四组打印  上 右 下 左
		StringBuffer pr = new StringBuffer();
		while(up<=down||left<=right){
			
			for(int i=left;up<=down&&i<=right;i++){
				pr.append(arr[up][i]+",");
			}
			for(int i=up+1;left<=right&&i<=down-1;i++){
				pr.append(arr[i][right]+",");
			}
			if(arr.length>1){//只有当行数大于1才需要下打印
				for(int i=right;up<=down&&i>=left;i--){
					pr.append(arr[down][i]+",");
				}
			}
			if(arr[0].length>1){//只有当列数大于1才需要左打印
				for(int i=down-1;left<=right&&i>=up+1;i--){
					pr.append(arr[i][left]+",");
				}
			}
			up++;
			down--;
			left++;
			right--;
		}
		
		System.out.println(pr.substring(0,pr.length()-1));
	}

}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SUNbrightness

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值