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

代码随想录算法训练营第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.有序数组平方 题目链接&#xff1a; 977. 有序数组的平方 - 力扣&#xff08;LeetCode&#xff09; 文章讲解&#xff1a;代码随想录 视频讲解&#xff1a; 双指针法经典题目 | LeetCode&#xff1a;977.有序数组的平方_哔哩哔哩_bilibili 第一想法 暴力算法肯定是先将元素…...

Web前端开发——HTML快速入门

HTML&#xff1a;控制网页的结构CSS&#xff1a;控制网页的表现 一、什么是HTML、CSS &#xff08;1&#xff09;HTML &#xff08;HyperText Markup Languaqe&#xff1a;超文本标记语言&#xff09; 超文本&#xff1a;超越了文本的限制&#xff0c;比普通文本更强大。除了…...

浅谈http协议及常见的面试题

1、浅谈http协议 HTTP&#xff08;Hypertext Transfer Protocol&#xff09;超文本传输协议&#xff0c;是互联网上应用最为广泛的一种网络协议&#xff0c;所有的WWW文件都必须遵守这个标准。它是基于TCP/IP通信协议来传递数据&#xff08;HTML文件、图片文件、查询结果等&am…...

LabVIEW自动探头外观检测

开发了一套基于LabVIEW的软件系统&#xff0c;结合视觉检测技术&#xff0c;实现探头及连接器外观的自动检测。通过使用高分辨率工业相机、光源和机械手臂&#xff0c;系统能够自动定位并检测探头表面的细微缺陷&#xff0c;如划痕、残胶、异色、杂物等。系统支持多种探头形态&…...

搏击与防卫笔记

文章目录 降龙十八掌 咏春个人防身笔记防卫直拳应对耳光防卫摆拳坐马冲拳 本来想以武术为标题的&#xff0c;想了想武术这个标题太大太深&#xff0c;自己连一知半解都算不上&#xff0c;就谢为搏击与防卫吧。 每个男孩都有个武侠梦&#xff0c;独步江湖&#xff0c;仗剑走天涯…...

泰国内部安全行动司令部数据泄露

BreachForums 论坛的一名成员宣布发生一起重大数据泄露事件&#xff0c;涉及泰国内部安全行动司令部 (ISOC)&#xff0c;该机构被称为泰国皇家武装部队的政治部门。 目前&#xff0c;我们无法准确确认此次泄露的真实性&#xff0c;因为该组织尚未在其网站上发布有关该事件的任…...

MATLAB算法实战应用案例精讲-【数模应用】分层聚类(附MATLAB、python和R语言代码实现)

目录 前言 几个高频面试题目 什么情况下选择分层聚类,什么情况下选择K-mean聚类呢?两种模型的好坏如何比较? 算法原理 SPSSAU 案例分析 SPSSPRO 1、作用 2、输入输出描述 3、案例示例 4、案例数据 5、案例操作 6、输出结果分析 7、注意事项 8、模型理论 分层…...

九、函数的声明和定义

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

简洁纯文字类的Typecho主题wenso

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

安卓请求服务器[根据服务器的内容来更新spinner]

根据服务器的内容来更新spinner 本文内容请结合如下两篇文章一起看: 腾讯云函数node.js返回自动带反斜杠 腾讯云函数部署环境[使用函数URL] 现在有这样一个需求,APP有一个下拉选择框作为版本选择,因为改个管脚就变成一个版本,客户需求也很零散,所以后期会大量增加版本,这时候每…...

c++ 联合(Union)的特性和使用

联合&#xff08;Union&#xff09;是一种特殊的数据结构&#xff0c;允许在同一内存位置存储不同的数据类型。一个 union 可以有多个数据成员&#xff0c;但是在任意时刻只有一个数据成员可以有值。当某个成员被赋值后其他成员变为未定义状态。以下是联合的主要特点和使用方式…...

大白菜U盘启动工具

大白菜如何u盘启动进winpe装系统大白菜是一款非常实用的U盘启动盘制作工具&#xff0c;可以帮助用户快速地将U盘制作成启动盘&#xff0c;从而方便地进行系统安装、维护和修复等操作。官方网站&#xff1a; 大白菜u盘启动盘制作工具_大白菜u盘装系统_大白菜pe_大白菜官网-首页…...

C# 中 IEnumerable 和 IQueryable 接口之间的区别

在 C# 中&#xff0c;IEnumerable和IQueryable接口都用于查询数据集合&#xff0c;但它们的用途不同&#xff0c;功能也不同。下面是它们之间差异的细分&#xff1a; 1. C# 中的 IEnumerable 接口 在命名空间中定义System.Collections。表示集合中元素的只进式游标。适用于查…...

centos安装yum命令及常用yum命令

一、准备工作 获取安装介质&#xff1a; 如果你有CentOS的安装ISO文件或DVD介质&#xff0c;可以直接使用它来设置本地yum源。 如果没有&#xff0c;你需要在一个有网络连接的CentOS系统上下载所需的rpm包和依赖。 创建挂载点&#xff08;如果你使用的是ISO文件&#xff09;&a…...

table = collections.defaultdict(list)申请的字典的类型是什么?

当你使用 collections.defaultdict(list) 来申请一个字典时&#xff0c;这个字典的类型是 defaultdict&#xff0c;但是其行为和表现方式在某些方面与普通的字典&#xff08;dict&#xff09;相似&#xff0c;主要区别在于它如何处理缺失的键。 defaultdict 是 Python 标准库 …...

【虚拟机】虚拟机网络无法访问问题【已解决】

【虚拟机】虚拟机无法上网问题【已解决】 问题探究解决方法法1&#xff1a;查看相关“网络服务”是否处于正常启动状态法2&#xff1a;重启网络法3&#xff1a;重新安装VMWare法4&#xff1a;使用NAT模式&#xff0c;每次打开win7都没连上网的解决办法 问题探究 安装了很多个虚…...

大数据面试题之Spark(3)

目录 Spark的哪些算子会有shuffle过程? Spark有了RDD&#xff0c;为什么还要有Dataform和DataSet? Spark的RDD、DataFrame、DataSet、DataStream区别? Spark的Job、Stage、Task分别介绍下&#xff0c;如何划分? Application、job、Stage、task之间的关系 Stage内部逻辑…...

基于 Gunicorn + Flask + Docker 的模型高并发部署

在现代 Web 应用程序中&#xff0c;处理高并发请求是一个常见且重要的需求。本文将介绍如何使用 Gunicorn、Flask 和 Docker 来实现模型的高并发部署。我们将从环境设置、代码实现、Docker 镜像构建及部署等方面进行详细讲解。 一、环境设置 1. 安装 Flask 首先&#xff0c;…...

CPU通过网络将IP camera的RTSP流(H.264编码或是H.265编码)拉回, 交给GPU解码并显示的处理流程

这个流程涉及到从IP摄像头获取视频流&#xff08;通过RTSP协议&#xff09;&#xff0c;然后将流传输给GPU进行解码和显示的过程。详细的流程描述如下&#xff1a; 1. 获取视频流: - **IP摄像头**: 摄像头通过RTSP&#xff08;Real-Time Streaming Protocol&#xff09;将…...

windows@资源管理器中的地址栏@访问共享文件夹的各种方法@管理共享文件夹

文章目录 资源管理器中的地址栏可以访问什么访问共享文件夹&#x1f47a;UNC路径资源管理器打开共享文件夹纯命令行方式访问共享文件夹 共享文件夹相关操作查看所有已经共享的文件夹&#x1f47a;停止某个文件的共享 共享文件夹的访问控制补充匿名访问问题&#x1f60a;强制启用…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...

深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向

在人工智能技术呈指数级发展的当下&#xff0c;大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性&#xff0c;吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型&#xff0c;成为释放其巨大潜力的关键所在&…...