代码随想录算法训练营第2天|LeetCode977,209,59
977.有序数组平方
题目链接: 977. 有序数组的平方 - 力扣(LeetCode)文章讲解:代码随想录
视频讲解: 双指针法经典题目 | LeetCode:977.有序数组的平方_哔哩哔哩_bilibili
第一想法
暴力算法肯定是先将元素平方,然后Arrays.sort(),时间复杂度取决于快排O(n logn)
代码随想录
有序数组 [ -5 -3 1 3 5] 按从小到大排列,其平方之后两边一定是最大的,中间一定是最小的,所以定义双头指针,每次筛选出最大值,从新数组result的最大索引处填入。这样更新一轮下来,新数组就会从大到小填好。
定义双头指针比较出最大的元素有些像快速排序算法。
遇到问题
若先将元素更新为平方,然后再用于比较,那么这个元素如果这次尚未选中,下轮就会继续平方。所以这个判断逻辑应放到比较条件里。
代码
class Solution1 {public int[] sortedSquares(int[] nums) {int[] result = new int[nums.length];//定义新数组,大小应与原数组相同int left = 0;int right = nums.length - 1;//定义原数组双头指针int index = nums.length - 1;//定义填充新数组的索引指针for(;left<=right;){//left==right有意义应当进入循环if(nums[left]*nums[left]>nums[right]*nums[right]){result[index--] = nums[left]*nums[left];//若左边元素大,则复制给新数组,左边索引+1left++;}else{result[index--] = nums[right] * nums[right];//若右边元素大,则复制给新数组,右边索引-1;或者两边相同,则选谁填充都无所谓right--;}}return result;}
}
209.长度最小的子数组
题目链接: 209. 长度最小的子数组 - 力扣(LeetCode)文章讲解:代码随想录
视频讲解:拿下滑动窗口! | LeetCode 209 长度最小的子数组_哔哩哔哩_bilibili
第一想法
首先一定是暴力想法,逐个数组遍历,若总和满足>=target,则记录数组长度,与上次符合要求的子数组结果作比较,若长度更小,则更新子数组。
代码随想录想法
用一个循环解决问题,那么j指的是子数组的终止位置,其起始位置的确定就在于滑动窗口的策略实现。如果指的是起始位置,那么只有一个一个向后遍历才能返回子数组,思路和暴力解法一致。
移动起始位置的条件是一旦当数组子数组之和>=target之后,起始指针就向后持续移动缩小数组。所以关键在于while循环而非if的单次判断。
一些录友会疑惑为什么时间复杂度是O(n)。
不要以为for里放一个while就以为是O(n^2)啊, 主要是看每一个元素被操作的次数,每个元素在滑动窗后进来操作一次,出去操作一次,每个元素都是被操作两次,所以时间复杂度是 2 × n 也就是O(n)
代码
class Solution1 {public int minSubArrayLen(int target, int[] nums) {int subLength = Integer.MAX_VALUE;int sum = 0;int beginIndex = 0;int endIndex = 0;for(;endIndex<nums.length;endIndex++){sum+=nums[endIndex];//终点指针持续向后移动while (sum>=target){subLength = Math.min(subLength, endIndex - beginIndex + 1);//更新最小长度sum -= nums[beginIndex++];//起始指针后移;}}return subLength == Integer.MAX_VALUE ? 0 : subLength;//若未赋值则返回0}
}
59.螺旋矩阵
题目链接: 59. 螺旋矩阵 II - 力扣(LeetCode)文章讲解:代码随想录
视频讲解:一入循环深似海 | LeetCode:59.螺旋矩阵II_哔哩哔哩_bilibili
第一想法
没思路,一碰到循环和二维数组就寄
代码随想录思路
确定圈数:n/2,因为每转一圈,边长-2
n%2==1,有余数的话,最后一圈只要一个元素
每条边的处理都遵循左闭右开的原则,第一个节点留给此边处理,最后一个结点留给下一条边处理。
别人优化思路
1.关于中心元素处理:其实可以在初始化res矩阵的时候就直接把全部元素初始化为n*n,这样即使n是奇数,也无需处理中间的元素
2.startx,starty,offset可以优化成一个变量处理。
代码
画了一下四个边角的坐标,数组的边界处理,这个offset变量还是很难把握
class Solution {public int[][] generateMatrix(int n) {int[][] result = new int[n][n];//新建二维数组int loop = 0;int startX = 0, startY = 0, offset = 1;//起始X坐标,起始Y坐标,偏移量int count = 1;while (loop<n/2){int i = startX, j = startY;//先处理上边界for (j = startY; j < n - offset; j++) {//j的最大值应该是倒数第二个元素j<=n-1-offset,即j<n-offsetresult[startX][j] = count++;}//处理右边界for (i = startX; i < n - offset; i++) {//此时j等于n-offsetresult[i][j]=count++;}//处理下边界for(;j>startY;j--){result[i][j]=count++;}//处理左边界for(;i>startX;i--){result[i][j]=count++;}startX++;startY++;offset++;loop++;}if(n%2==1){result[startX][startY]=count;}return result;}
}
相关文章:

代码随想录算法训练营第2天|LeetCode977,209,59
977.有序数组平方 题目链接: 977. 有序数组的平方 - 力扣(LeetCode) 文章讲解:代码随想录 视频讲解: 双指针法经典题目 | LeetCode:977.有序数组的平方_哔哩哔哩_bilibili 第一想法 暴力算法肯定是先将元素…...

Web前端开发——HTML快速入门
HTML:控制网页的结构CSS:控制网页的表现 一、什么是HTML、CSS (1)HTML (HyperText Markup Languaqe:超文本标记语言) 超文本:超越了文本的限制,比普通文本更强大。除了…...
浅谈http协议及常见的面试题
1、浅谈http协议 HTTP(Hypertext Transfer Protocol)超文本传输协议,是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。它是基于TCP/IP通信协议来传递数据(HTML文件、图片文件、查询结果等&am…...

LabVIEW自动探头外观检测
开发了一套基于LabVIEW的软件系统,结合视觉检测技术,实现探头及连接器外观的自动检测。通过使用高分辨率工业相机、光源和机械手臂,系统能够自动定位并检测探头表面的细微缺陷,如划痕、残胶、异色、杂物等。系统支持多种探头形态&…...
搏击与防卫笔记
文章目录 降龙十八掌 咏春个人防身笔记防卫直拳应对耳光防卫摆拳坐马冲拳 本来想以武术为标题的,想了想武术这个标题太大太深,自己连一知半解都算不上,就谢为搏击与防卫吧。 每个男孩都有个武侠梦,独步江湖,仗剑走天涯…...

泰国内部安全行动司令部数据泄露
BreachForums 论坛的一名成员宣布发生一起重大数据泄露事件,涉及泰国内部安全行动司令部 (ISOC),该机构被称为泰国皇家武装部队的政治部门。 目前,我们无法准确确认此次泄露的真实性,因为该组织尚未在其网站上发布有关该事件的任…...
MATLAB算法实战应用案例精讲-【数模应用】分层聚类(附MATLAB、python和R语言代码实现)
目录 前言 几个高频面试题目 什么情况下选择分层聚类,什么情况下选择K-mean聚类呢?两种模型的好坏如何比较? 算法原理 SPSSAU 案例分析 SPSSPRO 1、作用 2、输入输出描述 3、案例示例 4、案例数据 5、案例操作 6、输出结果分析 7、注意事项 8、模型理论 分层…...

九、函数的声明和定义
函数声明: 1. 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数 声明决定不了。 2. 函数的声明一般出现在函数的使用之前。要满足先声明后使用。 3. 函数的声明一般要放在头文件中的。 定义的函…...

简洁纯文字类的Typecho主题wenso
主题介绍 文章说说类博客网站源码,页面清新简洁。适合文章说说美文博客网站建站使用,响应式手机版本。 本来是dedecms的模板,也比较简单,适合用来搭建一个文学类的,纯文字的网站,简单的改成了typecho&…...

安卓请求服务器[根据服务器的内容来更新spinner]
根据服务器的内容来更新spinner 本文内容请结合如下两篇文章一起看: 腾讯云函数node.js返回自动带反斜杠 腾讯云函数部署环境[使用函数URL] 现在有这样一个需求,APP有一个下拉选择框作为版本选择,因为改个管脚就变成一个版本,客户需求也很零散,所以后期会大量增加版本,这时候每…...
c++ 联合(Union)的特性和使用
联合(Union)是一种特殊的数据结构,允许在同一内存位置存储不同的数据类型。一个 union 可以有多个数据成员,但是在任意时刻只有一个数据成员可以有值。当某个成员被赋值后其他成员变为未定义状态。以下是联合的主要特点和使用方式…...

大白菜U盘启动工具
大白菜如何u盘启动进winpe装系统大白菜是一款非常实用的U盘启动盘制作工具,可以帮助用户快速地将U盘制作成启动盘,从而方便地进行系统安装、维护和修复等操作。官方网站: 大白菜u盘启动盘制作工具_大白菜u盘装系统_大白菜pe_大白菜官网-首页…...
C# 中 IEnumerable 和 IQueryable 接口之间的区别
在 C# 中,IEnumerable和IQueryable接口都用于查询数据集合,但它们的用途不同,功能也不同。下面是它们之间差异的细分: 1. C# 中的 IEnumerable 接口 在命名空间中定义System.Collections。表示集合中元素的只进式游标。适用于查…...
centos安装yum命令及常用yum命令
一、准备工作 获取安装介质: 如果你有CentOS的安装ISO文件或DVD介质,可以直接使用它来设置本地yum源。 如果没有,你需要在一个有网络连接的CentOS系统上下载所需的rpm包和依赖。 创建挂载点(如果你使用的是ISO文件)&a…...
table = collections.defaultdict(list)申请的字典的类型是什么?
当你使用 collections.defaultdict(list) 来申请一个字典时,这个字典的类型是 defaultdict,但是其行为和表现方式在某些方面与普通的字典(dict)相似,主要区别在于它如何处理缺失的键。 defaultdict 是 Python 标准库 …...

【虚拟机】虚拟机网络无法访问问题【已解决】
【虚拟机】虚拟机无法上网问题【已解决】 问题探究解决方法法1:查看相关“网络服务”是否处于正常启动状态法2:重启网络法3:重新安装VMWare法4:使用NAT模式,每次打开win7都没连上网的解决办法 问题探究 安装了很多个虚…...
大数据面试题之Spark(3)
目录 Spark的哪些算子会有shuffle过程? Spark有了RDD,为什么还要有Dataform和DataSet? Spark的RDD、DataFrame、DataSet、DataStream区别? Spark的Job、Stage、Task分别介绍下,如何划分? Application、job、Stage、task之间的关系 Stage内部逻辑…...
基于 Gunicorn + Flask + Docker 的模型高并发部署
在现代 Web 应用程序中,处理高并发请求是一个常见且重要的需求。本文将介绍如何使用 Gunicorn、Flask 和 Docker 来实现模型的高并发部署。我们将从环境设置、代码实现、Docker 镜像构建及部署等方面进行详细讲解。 一、环境设置 1. 安装 Flask 首先,…...
CPU通过网络将IP camera的RTSP流(H.264编码或是H.265编码)拉回, 交给GPU解码并显示的处理流程
这个流程涉及到从IP摄像头获取视频流(通过RTSP协议),然后将流传输给GPU进行解码和显示的过程。详细的流程描述如下: 1. 获取视频流: - **IP摄像头**: 摄像头通过RTSP(Real-Time Streaming Protocol)将…...

windows@资源管理器中的地址栏@访问共享文件夹的各种方法@管理共享文件夹
文章目录 资源管理器中的地址栏可以访问什么访问共享文件夹👺UNC路径资源管理器打开共享文件夹纯命令行方式访问共享文件夹 共享文件夹相关操作查看所有已经共享的文件夹👺停止某个文件的共享 共享文件夹的访问控制补充匿名访问问题😊强制启用…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...