力扣54题——螺旋矩阵

题目:

给你一个 mn 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

实现代码:

java 复制代码
class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        int m=matrix.length;
        int n = matrix[0].length;
        List<Integer> res=new ArrayList<>();    //list接口实现arrayList这个数组
        int l=0,r=n-1,t=0,b=m-1;
        while(true){
            for(int i=l;i<=r;i++){
                res.add(matrix[t][i]);
            }
            if(++t>b){
                break;
            }
            for(int i=t;i<=b;i++){
                res.add(matrix[i][r]);
            }
            if(l>--r){
                break;
            }
            for(int i=r;i>=l;i--){
                res.add(matrix[b][i]);
            }
            if(t>--b){
                break;
            }
            for(int i=b;i>=t;i--){
                res.add(matrix[i][l]);
            }
            if(++l>r){
                break;
            }
        }
        return res;
    }
}

思路讲解:

这边是学习了Krahets大佬的思路,感兴趣的小伙伴可以去力扣找这个题去看看。

这道题一开始我也像力扣59题一样写了count以及target,但是在执行的时候发现循环只执行了第一圈,仔细思考后发现没有注意到while语句,应该是没有退出条件循环被写死了,所以力扣测试环境应该也怕死循环所以就在第一圈结束给我停止了,所以大家可以看到实现代码中while里的条件是true,只要是后面能有退出条件就能解决这个问题,而这题其他思路和59题没有太大差别,大家可以对比两道题目多去思考,动手去实现一下。这里再放一下链接,大家有兴趣多看看:https://blog.csdn.net/suibiansa_/article/details/145157858

共勉!

相关推荐
云边有个稻草人34 分钟前
【C++】第十九节—一文万字详解 | AVL树实现
数据结构·c++·avl树·avl树的插入·avl树的旋转·avl树实现·avl树的结构
霜绛43 分钟前
机器学习笔记(四)——聚类算法KNN、Kmeans、Dbscan
笔记·算法·机器学习·kmeans·聚类
晨非辰2 小时前
#C语言——学习攻略:深挖指针路线(三)--数组与指针的结合、冒泡排序
c语言·开发语言·数据结构·学习·算法·排序算法·visual studio
小码哥学习中2 小时前
centos7 安装mysql5.7.36和mysql8.0.32(同时存在)
数据结构
zzywxc7872 小时前
编程算法在金融、医疗、教育、制造业等领域的落地案例
人工智能·算法·金融·自动化·copilot·ai编程
zzywxc7872 小时前
编程算法在金融、医疗、教育、制造业的落地应用。
人工智能·深度学习·算法·机器学习·金融·架构·开源
conkl3 小时前
构建 P2P 网络与分布式下载系统:从底层原理到安装和功能实现
linux·运维·网络·分布式·网络协议·算法·p2p
Shan12053 小时前
递归算法的一些具体应用
算法
GSDjisidi4 小时前
日本IT就职面试|仪容&礼仪篇分享建议
面试·职场和发展
paopaokaka_luck5 小时前
婚纱摄影管理系统(发送邮箱、腾讯地图API、物流API、webSocket实时聊天、协同过滤算法、Echarts图形化分析)
vue.js·spring boot·后端·websocket·算法·echarts