数组-螺旋矩阵
M螺旋矩阵 ||(leetcode59)
/*** @param {number} n* @return {number[][]}*/
var generateMatrix = function(n) {const maxNum = n * n;let curNum = 1;const matrix = new Array(n).fill(0).map(() => new Array(n).fill(0));let row = 0,column = 0;const directions = [[0, 1], [1, 0], [0, -1], [-1, 0]]; //右下左上let directionIndex = 0;while (curNum <= maxNum) {matrix[row][column] = curNum;curNum++;const nextRow = row + directions[directionIndex][0], nextColumn = column + directions[directionIndex][1];if (nextRow < 0 || nextRow >= n || nextColumn < 0 || nextColumn >= n || matrix[nextRow][nextColumn] !== 0) {directionIndex = (directionIndex + 1) % 4; //顺时针旋转至下一个方向}row = row + directions[directionIndex][0];column = column + directions[directionIndex][1];}return matrix;
};
M螺旋矩阵(leetcode54)
/*** @param {number[][]} matrix* @return {number[]}*/
var spiralOrder = function(matrix) {let left = 0; //四个边界let right = matrix[0].length - 1;let top = 0;let bottom = matrix.length - 1;let res = []; //存储结果while(true) {for(let i = left; i <= right; i++) {res.push(matrix[top][i]);}top++;if (top > bottom) break; // 四个边,每个边结束都判断是否终止for (let i = top; i <= bottom; i++) {res.push(matrix[i][right]);}right--;if (right < left) break;for (let i = right; i >= left; i--) {res.push(matrix[bottom][i]);}bottom--;if(bottom < top) break;for(let i = bottom; i >= top;i--) {res.push(matrix[i][left]);}left++;if(left > right) break;}return res;
};
E螺旋遍历二维数组(leetcode146)
/*** @param {number[][]} array* @return {number[]}*/
var spiralArray = function(array) {if (!array.length || !array[0].length) {return [];}const rows = array.length, columns = array[0].length;const visited = new Array(rows).fill(0).map(() => new Array(columns).fill(false));const total = rows * columns;const order = new Array(total).fill(0);let directionIndex = 0, row = 0, column = 0;const directions = [[0, 1], [1, 0], [0, -1], [-1, 0]];for (let i = 0; i < total; i++) {order[i] = array[row][column];visited[row][column] = true;const nextRow = row + directions[directionIndex][0], nextColumn = column + directions[directionIndex][1];if (!(0 <= nextRow && nextRow < rows && 0 <= nextColumn && nextColumn < columns && !(visited[nextRow][nextColumn]))) {directionIndex = (directionIndex + 1) % 4;}row += directions[directionIndex][0];column += directions[directionIndex][1];}return order;
};
相关文章:

数组-螺旋矩阵
M螺旋矩阵 ||(leetcode59) /*** param {number} n* return {number[][]}*/ var generateMatrix function(n) {const maxNum n * n;let curNum 1;const matrix new Array(n).fill(0).map(() > new Array(n).fill(0));let row 0,column 0;const d…...
GitStack详细配置与使用指南
1.引言 GitStack是一个功能强大的Git服务器管理工具,专为Windows环境设计。它提供了一个用户友好的Web界面,使得在Windows服务器上管理Git仓库变得简单高效。本文将详细介绍GitStack的安装、配置和使用方法,帮助您快速搭建自己的Git服务器。 2.GitStack安装 2.1 系统要求 Wi…...

LoadRunner-Virtual User Generator组件学习
重点知识 LR工具是拿C写的,所以它的脚本默认也是C,但是最终生成的脚本不止是C,它是支持C和Java语言的,这个大家要清楚,对本身懂代码的就很友好,你了解java,那就可以把脚本改成java,…...

NAT地址转换实验,实验超简单
实验拓扑 实验目的 将内网区域(灰色区域)的地址转换为172.16.1.0 实验过程 配置静态NAT(基于接口的静态NAT) R1配置 <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sysname R1 [R1]un in en I…...
pip常用命令详解
pip 是 Python 的官方第三方包管理工具之一,其为 Python 包的安装与管理提供了极大的便利。本文将详细介绍 pip 的常见命令及其用法,帮助读者更好地利用这一强大的工具。 1. 安装 pip 在开始使用 pip 之前,确保您的系统中已经安装了 pip。p…...

vue3从入门到精通
CDN方式使用vue: 获取复杂数据类型: 使用结构复制语法去除vue前缀: 使用模块化开发: 需要安装插件live server: 需要访问网络地址: 简单数据类型ref的使用: 如何修改number reactive修改值不需要.value&…...

kubuadm 方式部署 k8s 集群
准备三台机器 主机名IP地址CPU/内存操作系统版本角色K8S版本Docker版本k8s231192.168.99.2312C4GCentos 7master1.23.1720.10.24k8s232192.168.99.2322C4GCentos 7woker1.23.1720.10.24k8s233192.168.99.2332C4GCentos 7woker1.23.1720.10.24 需要在K8S集群各节点上面安装dock…...

Android studio 打包低版本的Android项目报错
一、报错内容 Execution failed for task :app:packageRelease. > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade> com.android.ide.common.signing.KeytoolException: Failed to read key key0 from store "…...

【教程】lighttpd配置端口反向代理
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 1、修改配置文件: sudo vim /etc/lighttpd/lighttpd.conf2、先添加mod_proxy: 3、然后添加端口映射: 4、保存&…...

微服务之服务保护策略【持续更新】
文章目录 线程隔离一、滑动窗口算法二、漏桶算法三、令牌桶算法 面试题1、Sentinel 限流和Gateway限流的区别 线程隔离 两种实现方式 线程池隔离(Hystix隔离),每个被隔离的业务都要创建一个独立的线程池,线程过多会带来额外的CPU…...

微信小程序的开发
前端:微信小程序开发的技术 后端:springboot的框架 一:微信小程序环境的搭建 1. 访问微信开发者官⽅⽹站的⼩程序开发⼯具下载⻚⾯。 2. 根据你的操作系统(Windows、macOS或Linux)选择合适的版本进⾏下载。 3. 下…...
Oracle中CREATE FORCE VIEW的说明和例子
Oracle数据库中的CREATE FORCE VIEW语句用于创建视图,即使在视图所依赖的基表或对象不存在,或者创建视图的用户对这些对象没有足够的权限时,也能强制创建视图。不过,需要明确的是,尽管视图能被强制创建,但在…...

C#反射基本应用
1、反射 反射是.NET Framework的一个特性,它允许在运行时获取类型的信息以及动态创建对象,调用方法,以及访问字段和属性。 2、代码 using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy…...
1.英语中的从句学习
名词性从句: 1.最常见的连接词是that在宾语从句中的运用,如:I know that you will come. 句中的that 就是连接词,作用就是连接主句和从句,不充当成分也没有含义,只起风向标的作用,告诉你接下来…...
Perl语言简介
Perl语言,全称为Practical Extraction and Report Language(实用提取与报告语言),是一种高级、通用、解释型的编程语言。它由Larry Wall于1987年首次发布,并迅速因其强大的文本处理能力和高度的灵活性而受到广泛应用。…...
【SpringBoot3】使用Jasypt加密数据库用户名、密码等敏感信息
一、使用步骤介绍 使用Jasypt(Java Simplified Encryption)进行数据加密和解密主要涉及几个步骤,包括引入依赖、配置加密密码、加密敏感信息、将加密信息存储到配置文件中,以及应用程序启动时自动解密。以下是详细的使用说明&…...
如何确定MySQL中哪些列适合做索引
1、查询频率 频繁出现在WHERE子句、JOIN条件、ORDER BY子句或GROUP BY子句中的列是创建索引的候选列。 2、数据唯一性 具有唯一性约束的列(如主键、唯一索引)是创建索引的理想选择,因为它们可以确保查询的快速返回。 如果列中的值大部分都…...
C# winform中权限页面的设计和开发
在C# WinForm应用中设计和开发权限页面,主要涉及到用户界面的创建、数据模型的构建以及业务逻辑的实现。以下是一个基本的步骤,可用来参考构建一个权限管理页面: 第一步:设计用户界面 创建一个新的WinForm:在Visual S…...

本地Windows电脑 连接 Windows 服务器
Windows电脑 连接 Windows 服务器 方式1:直接搜索 在电脑的搜索栏,输入“远程桌面连接” 可以选择点击 “打开” 或者直接按 回车键 “Enter”,打开 远程桌面连接 方式2:运行框打开服务器连接 同时按:Windows徽标键…...

【分布式计算框架 MapReduce】MapReduce 初级编程
目录 一、MapReduce 示例程序的导入并运行测试 二、准备 4 个小文件(文件大小分别为 1.7M,5.1M,3.4M,6.8M) 1. 第一种情况,默认分片:不修改程序代码,直接使用 WordCount 源程序 2…...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...