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

54. 螺旋矩阵【rust题解】

题目

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

示例

示例 1

image.png

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]

输出:[1,2,3,6,9,8,7,4,5]

示例 2

image.png

输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]

输出:[1,2,3,4,8,12,11,10,9,5,6,7]

提示

m == matrix.length
n == matrix[i].length
1 <= m, n <= 10
-100 <= matrix[i][j] <= 100

思路

深搜,方向旋转。需要特别处理在最左边往上搜索的情况。

AC代码

impl Solution {pub fn dfs(v: &Vec<Vec<i32>>, vis: &mut Vec<Vec<bool>>, x: i32, y: i32) -> Vec<i32> {let x_len = v.len() as i32;let y_len = v[0].len() as i32;let mut res: Vec<i32> = Vec::new();if x < 0 || x >= x_len || y < 0 || y >= y_len || vis[x as usize][y as usize] {return res;}vis[x as usize][y as usize] = true;let mut res1: Vec<i32> = Vec::new();let mut res2: Vec<i32> = Vec::new();let mut res3: Vec<i32> = Vec::new();let mut res4: Vec<i32> = Vec::new();res1 = match x >= 1 && (y == 0 || (y >= 1 && vis[x as usize][y as usize - 1])) && !vis[x as usize - 1][y as usize]{true => Solution::dfs(v, vis, x - 1, y),_ => Solution::dfs(v, vis, x, y + 1)};res2 = Solution::dfs(v, vis, x + 1, y);res3 = Solution::dfs(v, vis, x, y - 1);res4 = Solution::dfs(v, vis, x - 1, y);res.push(v[x as usize][y as usize]);res.extend(res1);res.extend(res2);res.extend(res3);res.extend(res4);res}pub fn spiral_order(v: Vec<Vec<i32>>) -> Vec<i32> {let x_len = v.len();let y_len = v[0].len();let mut vis: Vec<Vec<bool>> = vec![vec![false; y_len]; x_len];Solution::dfs(&v, &mut vis, 0 , 0)}
}

在这里插入图片描述

相关文章:

54. 螺旋矩阵【rust题解】

题目 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 示例 1 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5] 示例 2 输入&#xff1a;matrix [[1,2,3,4],[5,6,…...

学习笔记——网络参考模型——TCP/IP模型(传输层)

四、TCP/IP模型-传输层 一、TCP 1、TCP定义 TCP(Transmission Control Protocol&#xff0c;传输控制协议)∶为应用程序提供可靠的面向连接的通信服务。目前&#xff0c;许多流行的应用程序都使用TCP。 连接&#xff1a;正式发送数据之前&#xff0c;提前建立好一种虚拟的&…...

Java中的Instant

在Java中&#xff0c;Instant 是 java.time 包中的一个类&#xff0c;用于表示时间轴上的一个瞬时点&#xff0c;通常以纳秒精度表示。它通常用于表示机器可读的时间戳&#xff0c;而不是人类可读的时间表示&#xff08;如日期和时间&#xff09;。 Instant 主要用于时间计算和…...

PostgreSQL的锁介绍

PostgreSQL的锁介绍 PostgreSQL 中的锁机制是一种用于控制数据并发访问的手段&#xff0c;确保数据库的完整性和一致性。在实际应用中&#xff0c;合理使用锁可以避免数据不一致和减少死锁的发生。 锁类型 PostgreSQL 提供了多种锁类型&#xff0c;以下是一些常见的锁&#…...

4分之1外螺纹怎么编程:挑战与策略解析

4分之1外螺纹怎么编程&#xff1a;挑战与策略解析 在机械制造领域&#xff0c;螺纹编程是一项至关重要的技术任务。当面对如4分之1外螺纹这样的具体需求时&#xff0c;编程人员需要综合运用专业知识与编程技巧&#xff0c;以确保螺纹的精确度和生产效率。本文将围绕四个方面、…...

运用selenium爬取京东商品数据储存到MySQL数据库中

使用Selenium爬取京东商品数据并存储到MySQL数据库中的过程可以分为几个步骤&#xff1a; 1. 准备工作 安装所需库 确保你已经安装了Python环境以及以下库&#xff1a; selenium&#xff1a;用于自动化浏览器操作。pymysql 或 mysql-connector-python&#xff1a;用于连接M…...

K8S SWCK SkyWalking全链路跟踪工具安装

官方参考&#xff1a;如何使用java探针注入器? 配置两个demo&#xff0c;建立调用关系&#xff0c; 首先创建一个基础镜像dockerfile from centos 先安装java 参考: linux rpm方式安装java JAVA_HOME/usr/java/jdk1.8.0-x64 CLASSPATH.:$JAVA_HOME/lib/tools.jar PATH…...

Apache Omid Idea Debug 环境搭建

IDEA 搭建 Apache Omid 源码 DEBUG 环境 Apache Omid 在 Apache HBase 之上提供了多行分布式事务的能力&#xff0c;支持全局 MVCC 功能。简单介绍编译过程。 1.下载 HBase2 并启动 https://dlcdn.apache.org/hbase/ 配置环境变量 export HBASE_HOME/xxx/hbase-2.4.18 exp…...

【面试宝藏】Go并发编程面试题

深入Go语言并发编程 Go语言以其简洁、高效的并发处理能力而闻名。在Go中&#xff0c;通过各种同步机制和原子操作&#xff0c;可以轻松地实现高性能并发编程。本文将深入探讨Go语言中的并发编程&#xff0c;包括Mutex、RWMutex、Cond、WaitGroup、原子操作等内容。 1. Mutex几…...

④单细胞学习-cellchat细胞间通讯

目录 1&#xff0c;原理基础 流程 受体配体概念 方法比较 计算原理 2&#xff0c;数据 3&#xff0c;代码运行 1&#xff0c;原理基础 原文学习Inference and analysis of cell-cell communication using CellChat - PMC (nih.gov) GitHub - sqjin/CellChat: R toolk…...

即时通讯平台及门户系统WorkPlus打造移动应用管理平台

在全球化和数字化时代&#xff0c;企业管理和沟通的方式正发生着巨大的变化。为了实现高效的协作和资源共享&#xff0c;企业越来越倾向于使用即时通讯及门户系统。这两种系统结合起来&#xff0c;可以提供一套完整的沟通和信息发布平台&#xff0c;促进内部协作和信息管理。 …...

React@16.x(12)ref 转发-forwardRef

目录 1&#xff0c;介绍2&#xff0c;类组件如何使用4&#xff0c;应用场景-高阶组件HOC 1&#xff0c;介绍 上篇文章中提到&#xff0c;ref 只能对类组件使用&#xff0c;不能对函数组件使用。 而 ref 转发可以对函数组件实现类似的功能。 使用举例&#xff1a; import Re…...

电脑世界的大冒险:用人体比喻让孩子轻松理解电脑20240603

电脑世界的大冒险&#xff1a;用人体比喻让孩子轻松理解电脑 作为一名在IT行业的老程序猿&#xff0c;我见证了电脑技术的飞速发展&#xff0c;也亲身体验了科技给生活带来的翻天覆地的变化。然而&#xff0c;在这个日新月异的数字时代&#xff0c;我意识到&#xff0c;与孩子…...

构建智慧银行保险系统的先进技术架构

随着科技的不断发展&#xff0c;智慧银行保险系统正日益受到关注。在这个数字化时代&#xff0c;构建一个先进的技术架构对于智慧银行保险系统至关重要。本文将探讨如何构建智慧银行保险系统的先进技术架构&#xff0c;以提升服务效率、降低风险并满足客户需求。 ### 1. 智慧银…...

来自大厂硬盘的降维打击!当希捷酷玩520 1TB SSD卷到369,请问阁下该怎么应对?

来自大厂硬盘的降维打击&#xff01;当希捷酷玩520 1TB SSD卷到369&#xff0c;请问阁下该怎么应对&#xff1f; 哈喽小伙伴们好&#xff0c;我是Stark-C~ 今年4月份的时候因为电脑上的游戏盘突然挂掉&#xff0c;为了性价比选购了希捷酷玩520 1TB SSD&#xff0c;同时我也是…...

什么是封装?为什么是要封装?

封装是面向对象编程中的一种核心概念&#xff0c;它是将数据和操作数据的方法结合起来&#xff0c;形成一个整体&#xff0c;对外只暴露必要的接口&#xff0c;隐藏内部的具体实现细节。 封装的目的是为了实现信息隐藏和代码的模块化&#xff0c;具体原因如下&#xff1a; 1.…...

Spring Cloud | 服务 “注册与发现“ 框架 : Eureka框架

目录&#xff1a; Eureka 的 "工作机制" :一、Eureka 的 "工作原理" ( 两大组件 ) :1.1 Eureka Server ( 服务注册中心 )1.2 Eureka Client ( 服务/服务实例&#xff0c;其存在 "两种角色" : ①服务提供者 ②服务消费者 ) :Eureka Client 的 含义…...

编译链接问题

问题描述 C语言在编译的时候&#xff0c;提示链接的时候没有找到相应的方法 问题分析 代码文件结构&#xff1a; test.c test/1.c test/1.h test.c代码&#xff1a; #include “test/1.h” void main() { hello(); } test/1.c代码&#xff1a; void hello() { printf(“hel…...

电涡流的形成范围

电涡流的形成范围涉及多个方面&#xff0c;主要受到导体材料、磁场变化速度、导体形状和尺寸以及磁场方向的影响。以下是对这些因素的详细分析&#xff1a; 导体材料&#xff1a;金属和合金是最容易产生电涡流的材料&#xff0c;而非金属材料&#xff08;如陶瓷、塑料等&#…...

学业辅导导师:文心一言智能体详细介绍和开发

一、前言 本期题目 开发方向&#xff1a;学习成长类 解读&#xff1a; AI技术在学习成长方向的应用正日益增多&#xff0c;本期赛题需围绕该方向开发智能体包括但不限于:作文辅导助手、个性化学习助手、考试助手、各垂类教育内容专家等 二、我的智能体&#xff1a;学业辅导…...

从Java全栈工程师视角看Web开发的实战与思考

从Java全栈工程师视角看Web开发的实战与思考 面试现场&#xff1a;一次真实的技术对话 面试官&#xff1a;你好&#xff0c;我是今天的面试官&#xff0c;很高兴见到你。请先简单介绍一下自己。 应聘者&#xff1a;你好&#xff0c;我叫李明&#xff0c;28岁&#xff0c;本科学…...

OpenClaw压力测试:Phi-3-mini-128k-instruct持续运行24小时稳定性报告

OpenClaw压力测试&#xff1a;Phi-3-mini-128k-instruct持续运行24小时稳定性报告 1. 测试背景与目标 上周在本地部署了OpenClawPhi-3-mini组合后&#xff0c;我一直在思考这套方案的稳定性边界。作为个人自动化助手&#xff0c;它能否胜任724小时不间断工作&#xff1f;当我…...

数字IC时序约束实战:深入解析clock_uncertainty的设置策略与后端影响

1. 时钟不确定度的本质与组成 刚入行数字IC设计时&#xff0c;我最头疼的就是时序约束里那些看似相似却又微妙差别的概念。记得第一次看到clock_uncertainty这个参数&#xff0c;我盯着综合报告里的红色违例发了半小时呆。后来才明白&#xff0c;这个参数就像给时钟信号加了&qu…...

大疆诉影石创新专利侵权,FTO综合分析筑牢研发风控屏障

3月23日&#xff0c;全球无人机巨头大疆对同行影石创新提起专利权属纠纷诉讼&#xff0c;涉案6项专利聚焦无人机飞行控制、结构设计、影像处理等核心技术领域&#xff0c;这场行业龙头间的知识产权纠纷&#xff0c;成为近日行业关注焦点。职务发明权属成为争议关键本次纠纷由大…...

自动驾驶开发必备:Vscode+Git双神器组合的隐藏技巧(含分支管理秘籍)

自动驾驶开发必备&#xff1a;VscodeGit双神器组合的隐藏技巧&#xff08;含分支管理秘籍&#xff09; 在自动驾驶开发领域&#xff0c;高效的代码管理和协作流程是项目成功的关键因素。随着代码库规模不断扩大&#xff0c;团队规模持续增长&#xff0c;传统的版本控制方式往往…...

DSP题目:FFT算法的Matlab实现及其应用研究

DSP 题目&#xff1a;FFT算法的Matlab实现及应用研究最近帮室友调毕设的信号处理部分&#xff0c;他拿了个麦克风录的杂音&#xff0c;想把背景的50Hz工频噪音去掉&#xff0c;上来就问我“为啥我fft出来的峰不对”——害&#xff0c;这问题我刚学DSP的时候也踩过无数坑&#x…...

Android安全漏洞案例分析:血淋淋的教训

Android安全漏洞案例分析&#xff1a;血淋淋的教训 Android安全漏洞案例分析&#xff1a;血淋淋的教训 案例一&#xff1a;Secret Token泄露导致账户劫持 漏洞危害&#xff1a;攻击者获取用户全部权限 某社交App在客户端硬编码了API密钥&#xff0c;攻击者通过反编译获取密钥…...

抖音批量下载终极指南:免费无水印,一键搞定视频、音乐、合集

抖音批量下载终极指南&#xff1a;免费无水印&#xff0c;一键搞定视频、音乐、合集 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and brows…...

导入MotorCAD API(需先安装MotorCAD的Python接口)

基于Motorcad的4极6槽 内转子采用内插式磁钢 3000rpm 输出转矩 2.6Nm 效率93%外径 94mm 轴向长度70mm 功率800w 直流母线380V 永磁同步电机&#xff08;永磁直流无刷&#xff09;模型(PMSM或者是BLDC) 最近捣鼓了个小功率PMSM模型&#xff0c;用MotorCAD搭了个4极6槽内插式的&a…...

告别水印烦恼!3步轻松去水印,新手秒上手。

找到心仪的图片有水印、做设计好不容易找到的素材有水印、下载好看的壁纸有水印&#xff0c;遇到的好图全被水印扫兴&#xff1f;PS去水印&#xff0c;操作复杂&#xff0c;学习成本高&#xff0c;浪费时间&#xff1b;用专业去水印工具&#xff0c;收费昂贵&#xff0c;还有广…...