剑指offer 19 顺时针打印矩阵
来源:互联网 发布:大数据如何影响制造业 编辑:程序博客网 时间:2024/06/06 03:01
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
思路
可以用dfs中的四个方位来思考,首先是向右走{0,1},然后是向下走{1,0},然后是向左走{0,-1},最后是向上走{-1,0}。
不过要注意的是只能是上一次走的方向走不通了,才能换下一个方向而已。
import java.util.ArrayList;public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { if(matrix==null)return null; int s[][]={{0,1},{1,0},{0,-1},{-1,0}}; int ss[][]=new int[1000][1000]; ArrayList temp_Array=new ArrayList<Integer>(); int size_l=matrix.length; int size_r=matrix[0].length; int temp_xx=0; int temp_yy=0; int final_xx=0; int final_yy=0; for(int ii=0;ii<size_l;ii++){ for(int jj=0;jj<size_r;jj++) { ss[ii][jj]=0; } } ss[0][0]=1; int direction=0; temp_Array.add(new Integer(matrix[0][0])); while(true){ int mark=direction; while(true){ direction%=4; temp_xx=s[direction][0]+final_xx; temp_yy=s[direction][1]+final_yy; if((temp_xx>=size_l)||(temp_xx<0)||(temp_yy>=size_r)||(temp_yy<0)||(ss[temp_xx][temp_yy]==1)){ direction++; //mark++; if(mark==direction%4){mark=-1;break;} } else break; //break; } if(mark==-1)break; final_xx=temp_xx; final_yy=temp_yy; ss[final_xx][final_yy]=1; temp_Array.add(new Integer(matrix[final_xx][final_yy])); } return temp_Array; }}
0 0
- 剑指offer 19 顺时针打印矩阵
- 剑指Offer(19)______顺时针打印矩阵
- 剑指offer(19)—顺时针打印矩阵
- 牛客网-剑指offer-19-顺时针打印矩阵
- 【剑指offer】顺时针打印矩阵
- 剑指offer--顺时针打印矩阵
- 剑指offer--顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- 《剑指offer》顺时针打印矩阵
- 剑指offer-顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- 剑指offer-顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- [剑指offer]顺时针打印矩阵
- 《剑指offer》-顺时针打印矩阵
- ES-MongoDB学习6_用 mongodb + elasticsearch 实现中文检索
- Mysql备份和还原
- android 如何给图片添加水印
- DataNode本地数据存储和管理--ncp_block_verification.log.curr和dncp_block_verification.log.prev
- Java总结 第三篇 常用工具类
- 剑指offer 19 顺时针打印矩阵
- ORACLE 等待事件
- NSPredicate
- 基础排序算法(Java实现)
- java.pojo工具类
- 简单说说TCP(3) --- 断开连接四次握手
- Codeforces 584D Dima and Lisa 【数学】
- 架构高性能网站秘笈(一)——了解衡量网站性能的指标
- java locks包下提供的锁。