当前位置: 首页 > article >正文

【力扣】54. 螺旋矩阵

题解:

这里当然就不能只是通过双循环来解题了,因为会烦死。这道题的关键点在于左右边界的确定,参考官方解题法在这里写出我的解题思路。

首先看图,螺旋且顺时针,所以我们可以先遍历从左至右的,上边界加一向下移,然后从上至下,右边界-1向左移,这样就能保证不再重复遍历。待到从右至左的时候我们需要判断此时左边界是否小于右边界,上边界是否小于下边界,如果满足条件的话那就证明里面还有元素需要处理,那这个时候就进行从右至左,从下至上的操作。

代码如下:

class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        //1.定义数组用以存放满足条件的元素
        List<Integer> order=new ArrayList<Integer>();
        //2.不满足条件的情况直接返回即可
        if(matrix==null||matrix.length==0||matrix[0].length==0) return order;
        //3.获取到上下左右边界的值
        int row=matrix.length,col=matrix[0].length;
        int left=0,right=col-1,top=0,bottom=row-1;
        while(left<=right&&top<=bottom){
            //从左至右
            for(int i=left;i<=right;i++){
                order.add(matrix[top][i]);
            }
            //从上至下
            for(int i=top+1;i<=bottom;i++){
                order.add(matrix[i][right]);
            }
            if(left<right&&top<bottom){
                //从右至左
                for(int i=right-1;i>left;i--){
                    order.add(matrix[bottom][i]);
                }
                //从下至上
                for(int i=bottom;i>top;i--){
                    order.add(matrix[i][left]);
                }
            }
        left++;
        right--;;
        top++;
        bottom--;
        }
        return order;
    }
}


http://www.kler.cn/a/158223.html

相关文章:

  • 华为ospf和isis双点双向路由重分布的次优路径和环路终极解决方案
  • 搜维尔科技:AI时代,迈向2030元宇宙数字人戏曲教育数字化思维、战略与未来!
  • CMD批量添加防火墙端口
  • APB Introduction
  • word、excel文件转PDF(documents4j方式,简单)
  • 深度学习推理(Inference)
  • React全站框架Next.js使用入门
  • Sass 同时导出JavaScript 和 CSS变量
  • 微信小程序基础
  • Shopify二次开发之三:liquid语法学习(Tags)
  • 15.(vue3.x+vite)组件间通信方式之默认插槽(匿名插槽)
  • 有文件实体的后门无文件实体的后门rootkit后门
  • 营销互动类小游戏策划与开发
  • 查询绑定了所有id的name
  • 【电机控制】PMSM无感foc控制(五)相电流检测及重构 — 单电阻采样
  • Redis AOF源码解析
  • 2024年天津财经大学珠江学院专升本专业课考试《经济学》考试大纲
  • ftp的服务安装配置
  • 15:00的面试,15:06就出来了,问的问题过于变态了。。。
  • 如何为 3D 模型制作纹理的最佳方法