
剑指offer Leetcode 29.顺时针打印矩阵
发布日期:2021-05-06 23:39:46
浏览次数:51
分类:精选文章
本文共 1005 字,大约阅读时间需要 3 分钟。
解法:
思想:
复杂度:
●时间:O(mn)
●空间:O(1)
代码:
class Solution { public: vector spiralOrder(vector>& matrix) { if(matrix.empty() || matrix[0].empty()) return { }; int m = matrix.size(), n = matrix[0].size(); int l = 0, r = n - 1, t = 0, b = m - 1; vector ans(m * n, 0); int cnt = 0; while(true){ for(int i = l; i <= r; i++) //坐标很容易写错,要格外注意,是哪个坐标在变,哪边就是i ans[cnt++] = matrix[t][i]; //图上看起来是++t与b重合,但是其实应该是判断大于 if(++t > b) break; for(int i = t; i <= b; i++) ans[cnt++] = matrix[i][r]; if(--r < l) break; for(int i = r; i >= l; i--) ans[cnt++] = matrix[b][i]; if(--b < t) break; for(int i = b; i >= t; i--) ans[cnt++] = matrix[i][l]; if(++l > r) break; } return ans; }};
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年03月24日 17时17分55秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Kubernetes中的Ingress(五)
2019-03-06
Java并发之ThreadPoolExecutor源码解析(三)
2019-03-06