【CT】LeetCode手撕—54. 螺旋矩阵

news2024/12/24 21:50:57

目录

  • 题目
  • 1- 思路
  • 2- 实现
    • ⭐54. 螺旋矩阵——题解思路
  • 3- ACM实现

题目

  • 原题连接:92. 反转链表 II

1- 思路

  • 模式识别:螺旋矩阵 ——> 用四个指针来顺时针遍历

2- 实现

⭐54. 螺旋矩阵——题解思路

在这里插入图片描述

class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        List<Integer> res = new ArrayList<>();

        // 定义四个指针
        int left = 0;
        int right = matrix[0].length-1;
        int top = 0;
        int bottom = matrix.length-1;

        while(true){

            for(int i = left ; i <= right;i++){
                res.add(matrix[top][i]);
            }
            top++;
            if(top>bottom) break;

            for(int i = top;i<= bottom;i++){
                res.add(matrix[i][right]);
            }
            right--;
            if(left>right) break;

            for(int i = right ; i>= left;i--){
                res.add(matrix[bottom][i]);
            }
            bottom--;
            if(bottom<top) break;

            for(int i = bottom ; i>=top;i--){
                res.add(matrix[i][left]);
            }
            left++;
            if(left>right) break;
        }
        return res;
    }
}

3- ACM实现

public class spiralOrder {

    public static List<Integer>  spiral(int[][] matrix){
        List<Integer> res = new ArrayList<>();
        // 四个指针
        int left = 0;
        int right = matrix[0].length-1;
        int top = 0;
        int buttom = matrix.length-1;

        // 2. 开始遍历
        while(true){

            // 第一行
            for(int i = left;i<=right;i++){
                res.add(matrix[top][i]);
            }
            top++;
            if(top>buttom) break;

            // 右侧第一列
            for(int i = top;i<=buttom;i++){
                res.add(matrix[i][right]);
            }
            right--;
            if(right<left) break;

            // 底下一行
            for(int i = right; i>= left;i--){
                res.add(matrix[buttom][i]);
            }
            buttom--;
            if(buttom<top) break;

            // 左侧一列
            for(int i = buttom;i>=top;i--){
                res.add(matrix[i][left]);
            }
            buttom--;
            if(buttom<top) break;
        }
        return res;
    }


    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入二维数组的行");
        int m = sc.nextInt();
        System.out.println("输入二维数组的列");
        int n = sc.nextInt();
        int[][] matrix = new int[m][n];
        System.out.println("输入二维数组的元素");
        for (int i = 0 ; i < m;i++){
            for(int j = 0 ; j < n ;j++){
                matrix[i][j] = sc.nextInt();
            }
        }
        List<Integer> forRes = spiral(matrix);
        for(int i : forRes){
            System.out.print(i+" ");
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1847368.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网上预约就医取号系统

摘 要 近年来&#xff0c;随着信息技术的发展和普及&#xff0c;我国医疗信息产业快速发展&#xff0c;各大医院陆续推出自己的信息系统来实现医疗服务的现代化转型。不可否认&#xff0c;对一些大型三级医院来说&#xff0c;其信息服务质量还是广泛被大众所认可的。这就更需要…

win10修改远程桌面端口号,在Windows 10中修改远程桌面端口号的步骤

在Windows 10中&#xff0c;远程桌面服务&#xff08;Remote Desktop Services, RDS&#xff09;允许用户从远程位置访问和操作计算机。默认情况下&#xff0c;远程桌面协议&#xff08;RDP&#xff09;使用端口3389进行通信。然而&#xff0c;出于安全考虑&#xff0c;管理员可…

2008-2022年 全国31省-环境污染综合指数

环境污染综合指数是一个衡量环境污染程度或环境质量等级的抽象概括数值。它能够综合反映不同环境要素的污染情况&#xff0c;例如水污染指数和大气污染指数等。环境空气质量综合指数&#xff08;Air Quality Index, AQI&#xff09;是专门用来描述城市环境空气质量状况的一个指…

数字内容“遍地开花”,AI技术如何创新“造梦”?

文 | 智能相对论 作者 | 陈泊丞 这是春晚舞台西安分会场《山河诗长安》的一幕&#xff1a;“李白”现世&#xff0c;带领观众齐颂《将进酒》&#xff0c;将中国人骨子里的豪情与浪漫演绎得淋漓尽致。 这又是浙江义乌商品市场里的另一幕&#xff1a;只会说几个英文单词的女老板…

Linux 线程的同步与互斥

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux初窥门径⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Linux知识   &#x1f51d; 前言 1.资源共享问题 2.进程线程间的互斥…

JavaScript知识点大总结来了-------这一篇就足够啦!!!

JavaScript基础知识 一、对象的使用 1、创建对象 这里创建对象的方法我们采用最常用的一种&#xff1a; //第一种 <script>var Person {name: "zhangsan",age: "19",weight: "140",hight: "170",print:function(){console.…

让孩子在故事中成长,寓教于乐的趣学伴绘本投影故事机Lite

在早教产品琳琅满目的今天&#xff0c;挑选一款既吸引孩子又能提供真正教育价值的设备&#xff0c;对于家长们来说是一项挑战。我最近发现一种能够通过投影幻灯片讲故事的小工具很有趣&#xff0c;小朋友很喜欢&#xff0c;这款款名为趣学伴绘本投影故事机Lite的设备&#xff0…

NetSuite 不同类型Item的公司间交易科目的设置

我们知道&#xff0c;NetSuite中有Intercompany Preferences的设置&#xff0c;如下所示&#xff0c;分别涉及到公司间应收、公司间应付、公司间收入、公司间费用以及公司间成本共5个科目&#xff0c;非常明确清晰。 最近用户遇到的场景是&#xff0c;如果是Non-Inventory Item…

肾虚学习实验第T1周:实现mnist手写数字识别

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](https://mtyjkh.blog.csdn.net/)** 目录 一、前言 作为一名研究牲&#xff0…

webp动图转gif

目录 前言 解决过程 遇到问题 获取duration 前言 上一次我们实现了webp转jpg格式&#xff1a; https://blog.csdn.net/weixin_54143563/article/details/139758200 那么对于含动图的webp文件我们如何将其转为gif文件呢&#xff1f; 之所以会出现这个问题&#xff0c;是因…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 5G基站光纤连接问题(200分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

容器之工具栏构件演示

代码; #include <gtk-2.0/gtk/gtk.h> #include <glib-2.0/glib.h> #include <gtk-2.0/gdk/gdkkeysyms.h> #include <stdio.h>int main(int argc, char *argv[]) {gtk_init(&argc, &argv);GtkWidget *window;window gtk_window_new(GTK_WINDO…

远程桌面总是连接不上,mstsc远程总是连接不上解决方法

远程桌面连接在日常生活和工作中扮演着至关重要的角色&#xff0c;它允许用户在不同地点和设备之间无缝协作。然而&#xff0c;有时用户可能会遇到MSTSC&#xff08;Microsoft远程桌面连接&#xff09;总是连接不上的问题&#xff0c;这可能是由于多种原因造成的。本文将针对这…

若依 ruoyi 排序 顺序 倒序 的实现

1. table标签新增排序相关属性 // :default-sort"defaultSort" 指定默认排序 // sort-change"handleSortChange" 指定排序点击事件 :default-sort"defaultSort" sort-change"handleSortChange" 2. 列上新增排序相关配置 自定义查询语…

解决File协议导致的CORS限制,用Node.js搭建本地服务器

文章目录 一、前言二、分析报错原因三、如何解决四、具体步骤 你是否曾遇到这样的困境&#xff1a;在本地使用file://协议直接打开HTML文件时&#xff0c;由于现代浏览器的安全限制&#xff0c;无法跨源请求&#xff08;CORS&#xff09;本地资源&#xff1f;尤其是当你试图通过…

非关系型数据库NoSQL数据层解决方案 之 redis springboot整合与读写操作 2024详解以及window版redis5.0.14下载百度网盘

redis下载安装以及基本使用 下载地址 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;0410 一个名对应一个数值 内存级 在内存里进行操作 准备启动 我们现在就有一个redis客户端的服务器了 我们再启动一个cmd 操作redis数据库 redis里面的基本数据类型有五种 …

小程序 如何支付后获取 Unionid

接口说明 接口英文名 getPaidUnionid 功能描述 该接口用于在用户支付完成后&#xff0c;获调用本接口前需要用户完成支付&#xff0c;用户支付完成后&#xff0c;取该用户的 UnionId&#xff0c;无需用户授权。本接口支付后的五分钟内有效。 注意事项 调用前需要用户完成…

重构大学数学基础_week05_雅各比矩阵与雅各比行列式

这周来讲一下雅各比矩阵和雅各比行列式。 多元函数的局部线性属性 首先我们来回顾一下向量函数&#xff0c;就是我们输入一个向量&#xff0c;输出也是一个向量&#xff0c;我们假设现在有一个向量函数 这个函数意思就是在说&#xff0c;我们在原来的平面上有一个向量(x,y),经…

收藏||电商数据采集流程||电商数据采集API接口

商务数据分析的流程 第一步&#xff1a;明确分析目的。首先要明确分析目的&#xff0c;并把分析目的分解成若干个不同的分析要点&#xff0c;然后梳理分析思路&#xff0c;最后搭建分析框架。 第二步&#xff1a;数据采集。主流电商API接口数据采集&#xff0c;一般可以通过数…

【芯片知识】QSOP24封装-NRK3502语音识别芯片方案

一、NRK3502语音识别芯片的简介 NRK3502系列芯片是一款蓝牙双模智能语音l0T芯片。芯片集成32位CPU处理器&#xff0c;包含 UART、GPIO、SPI、SD卡、12C、ADC、TouchSensor 等外围接口;内置 NPU、浮点运算单元。 依托于在语音识别技术上的积累和算法的不断优化和创新&#xff0c…