遍历二维数组最外圈,要优雅.
[1,2,3]
[4,5,6]
[7,8,9]
遍历二维数组最外圈 --> 12369874
我以前在算法书上看到一个很清晰明了的.想不起来了.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
[1,2,3]
[4,5,6]
[7,8,9]
遍历二维数组最外圈 --> 12369874
我以前在算法书上看到一个很清晰明了的.想不起来了.
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(9)
通过一些计算可以把4个循环变成1个循环+循环内判断
将遍历过程想象成一个质点沿着矩形的四条边在运动。
假设二维数组为
arr
。上面的数组比较特殊,其行列数是一致的。
现在用一个不一致的来说明
虽然这是一个二维数组,在C/C++中但是其实质还是一个一维的。
[1,2,3,4,5,6,7,8,9,A,B,C]
现在来看遍历的过程(下面图中第四步最后的括号中应该是“行数-2”)
写成C代码的形式
Python 3 代碼:
不知道算不算優雅...
簡單來說就是就四個步驟:
正走 first row
正走 last col
逆走 last row
逆走 first col
只是要小心走過的不要再走(boundary condition)
没做结果按顺时针排序
不优雅的来一发。
数组确定一下遍历的方向顺序,然后用循环来变向。
应该算是优雅了吧 0 0