[剑指Offer] 19.顺时针打印矩阵

本文详细解析了一种矩阵螺旋打印的算法实现,该算法通过四个方向的循环遍历(左至右、上至下、右至左、下至上),有效地避免了元素的重复打印,并确保了所有元素都能被正确打印出来。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【思路】本题关键在于 右->左 和 下->上 两个循环体中的判断条件,即判断是否重复打印。
 1 class Solution
 2 {
 3 public:
 4     vector<int> printMatrix(vector<vector<int> > matrix)
 5     {
 6         int col = matrix[0].size();
 7         int row = matrix.size();
 8         int num = (((row <= col)?row:col) - 1)/2 + 1;
 9         vector<int> res;
10         res.clear();
11         for(int x = 0; x < num; x ++)
12         {
13             //左->右            
14             for(int i = x; i < col - x; i ++)
15             {
16                 res.push_back(matrix[x][i]);
17             }            
18             //上->下           
19             for(int i = x + 1; i < row - x; i ++)
20             {
21                 res.push_back(matrix[i][col - 1 - x]);
22             }            
23             //右->左           
24             for(int i = col - 2 - x; (i >= x) && (row - 1 - x != x); i --)
25             {
26                 res.push_back(matrix[row - 1 - x][i]);
27             }            
28             //下->上         
29             for(int i = row - 2 - x; (i > x) && (x != col - 1 - x); i --)
30             {
31                 res.push_back(matrix[i][x]);
32             }        
33         }        
34         return res;
35     }
36 };

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值