代码随想录算法训练营第五天天| 总结数组专题

数组:二分查找、双指针(包括快慢指针)、滑动窗口、模拟
链表:双指针、三指针、虚拟头指针、复杂指针操作画图明确每一步(标好次序)

数组

代码随想录总结的很好,如下图。我再结合自己的一些理解总结一下
引用自代码随想录

基础

定义:数组是存放在连续内存空间上的相同类型数据的集合。
特点:数组下标都是从0开始的数组内存空间的地址是连续的
vector和array的区别,vector的底层实现是array,严格来讲vector是容器,不是数组。
c++中二维数组在地址空间上是连续的。

双指针法:循环变量不变原则

重点:1、区间的定义——是左闭右闭还是左闭右开。右开还是右闭决定了right指向的值能否被访问。确定好right指向的值能否被访问,据此确定双指针初始值、循环条件、更新值
2、mid = left + (right - left) / 2; //避免(left + right)溢出的问题

704.二分查找

只适用于有序序列

左闭右闭:

right=nums.size()-1while (left <= right);
right=middle-1;left=middle+1

左闭右开:

right=nums.size()while (left<right);
right= middleleft=middle+1

27.移除元素

快慢指针的思想是:快指针向前遍历数组,慢指针根据快指针的遍历结果来对数组进行更新。

for(fast; fast < nums.size(); fast++){if(nums[fast] != val){//nums[slow] = nums[fast];//slow++;nums[slow++] = nums[fast];}}

977.有序数组的平方

相向指针:平方后,数组由两端向中间递减,是分为有序的两段,所以用双指针从两端开始比较得到从大到小的序列。

209.长度最小的子数组

滑动窗口思想:子序列的终止位置依次向后遍历,根据当前子序列和大小的情况,不断调节子序列的起始位置。即右进左出,右指针依次向前遍历数组,左指针根据右指针的遍历结果来对数组进行维护更新。

关键词:连续子数组=》子序列,应该想到滑动窗口。

59.螺旋矩阵II

明确模拟顺时针画矩阵的过程:填充上行从左到右,填充右列从上到下,填充下行从右到左,填充左列从下到上

关键: 1、坚持循环变量不变原则 2、更新每圈的初始位置和每圈的四条边长度

总结

有序:考虑二分、双指针
连续子数组、子序列:考虑滑动窗口
模拟:坚持循环变量不变原则,更新每圈的初始位置和每圈的四条边长度

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

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

相关文章

具于xilinx FPGA的可动态配置DDS频率控制字的DDS IP核使用例程详解

目录 1 概述2 IP examples功能3 IP 使用例程4注意事项5 DDS IP Examples下载位置 1 概述 本文用于讲解xilinx IP 的dds ip examples&#xff08;动态配置频率&#xff09;的功能说明&#xff0c;方便使用者快速上手。 2 IP examples功能 本examples 是月隐编写的针对DDS的使…

Awesome Mac:好用的Mac应用程序、软件以及工具

优秀好用的Mac应用&#xff1a;https://github.com/jaywcjlove/awesome-mac/blob/master/README-zh.md Awesome Mac目录开发者工具 编辑器开发者实用工具正则编辑器API开发和分析网络分析命令行工具版本控制GUI版本控制系统数据库设计和产品 设计工具原型流程作图工具截图工具其…

一篇文章带你了解Redis的发展史

Redis 是一个开源的内存数据存储和处理系统&#xff0c;它在过去的几十年中经历了重大的发展和演进。以下是 Redis 的发展历程概述&#xff1a; 早期阶段&#xff08;2000年代初至中期&#xff09;&#xff1a;在这个时期&#xff0c;网站的访问量通常较低&#xff0c;单个数据…

代码随想录算法训练营29期Day18|LeetCode 513,112,113,106,105

文档讲解&#xff1a;找树左下角的值 路径总和 从中序与后序遍历序列构造二叉树 513.找树左下角的值 题目链接&#xff1a;https://leetcode.cn/problems/find-bottom-left-tree-value/description/ 思路&#xff1a; 本题要求我们找到树最深一层的最左节点的值。搜索的话复…

xtu oj 1183 sum times

题目描述 整数a,b,其中ab c,a*b d,已知c和d&#xff0c;问是否存在a和b&#xff1f; 输入 第一行是一个整数K&#xff0c;表示样例个数。 每个样例占1行&#xff0c;两个整数c和d&#xff0c;0≤c,d≤109。 输出 每行输出一个样例的结果&#xff0c;a和b(a≤b)&#xff…

vite 创建 react 项目

npm create vitelatest 选择 react 和 ts 安装 react-redux 、react-router-dom 、redux 安装 reset-css 样式初始化 npm i --save-dev sass // 禁用文字选中 user-select: none; img{ // 禁止图片拖动 -webkit-user-drag: none; } 正确的样式引入顺序 样式初始化即 re…

51-11 多模态论文串讲—VLMo 论文精读

VLMo: Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts (NeurIPS 2022) VLMo 是一种多模态 Transformer 模型&#xff0c;从名字可以看得出来它是一种 Mixture-of-Modality-Experts (MoME)&#xff0c;即混合多模态专家。怎么理解呢&#xff1f;主流 …

yolov5无人机视频检测与计数系统(创新点和代码)

标题&#xff1a;基于YOLOv5的无人机视频检测与计数系统 摘要&#xff1a; 无人机技术的快速发展和广泛应用给社会带来了巨大的便利&#xff0c;但也带来了一系列的安全隐患。为了实现对无人机的有效管理和监控&#xff0c;本文提出了一种基于YOLOv5的无人机视频检测与计数系…

[软件工具]通用OCR识别文字识别中文识别服务程序可局域网访问

【软件界面】 【算法介绍】 采用业界最先进算法之一paddlocr&#xff0c;PaddleOCR&#xff0c;全称PaddlePaddle OCR&#xff0c;是一种基于深度学习的光学字符识别&#xff08;OCR&#xff09;技术。相较于传统的OCR技术&#xff0c;PaddleOCR具有许多优点。 首先&#xff0…

Activity 启动流程log分析

为了方便跟踪启动过程相关流程&#xff0c;打开debug开关&#xff0c;并添加Log打印 1.Log打点 1&#xff09;打开debug开关 打开 WindowManagerDebugConfig开关&#xff0c;会打开InputMonitor InputManagerCallback PhoneWindowManager中的input向相关日志打印 public st…

南京观海微电子----时序分析基本概念(一)——建立时间

1. 概念的理解 以上升沿锁存为例&#xff0c;建立时间&#xff08;Tsu&#xff09;是指在时钟翻转之前输入的数据D必须保持稳定的时间。如下图所示&#xff0c;一个数据要在上升沿被锁存&#xff0c;那么这个数据就要在时钟上升沿的建立时间内保持稳定。 建立时间是对触发器而…

RibbonGroup 添加QLineEdit

RibbonGroup添加QLineEdit&#xff1a; QLineEdit* controlEdit new QLineEdit(); controlEdit->setToolTip(tr("Edit")); controlEdit->setText(tr("Edit")); controlEdit->setMinimumWidth(150); …

C //练习 5-20 扩展dcl程序的功能,使它能够处理包含其他成分的声明,例如带有函数参数类型的声明、带有类似于const限定符的声明等。

C程序设计语言 &#xff08;第二版&#xff09; 练习 5-20 练习 5-20 扩展dcl程序的功能&#xff0c;使它能够处理包含其他成分的声明&#xff0c;例如带有函数参数类型的声明、带有类似于const限定符的声明等。 注意&#xff1a;代码在win32控制台运行&#xff0c;在不同的I…

Codeforces Round 919 (Div. 2)补题

Satisfying Constraints&#xff08;Problem - A - Codeforces&#xff09; 题目大意&#xff1a;有三种限定方式&#xff1a; 1.k>x; 2.k<x; 3.k!x; 根据若干限定&#xff0c;找出合法的k的个数。 思路&#xff1a;通过1&#xff0c;2定出区间&#xff0c;同时记录…

基于FFmpeg的简单Android视频播放器

1. 模块分割 首先对这个视频播放器所采用的一些部件要清楚。这个播放器主要可以拆分为4个部分&#xff1a; 1.解码&#xff1a;FFmpeg 2.音频输出&#xff1a;OpenSLES 3.视频渲染&#xff1a;OpenGLES 这些框架都是基于C的api&#xff0c;因此这次我们的主要工作将会集中…

ubuntu20.04安装cuda11.4以及cudnn

系统&#xff1a;ubuntu20.04硬件配置&#xff1a;GPU3080、CPU未知通过《软件和更新》在附加驱动选项中添加了驱动&#xff1a; 1.检查自己电脑支持的cuda nvidia-smi4. 下载cuda11.4.2 wget https://developer.download.nvidia.com/compute/cuda/11.4.2/local_installers/c…

TypeScript 从入门到进阶之基础篇(十) 抽象类篇

系列文章目录 TypeScript 从入门到进阶系列 TypeScript 从入门到进阶之基础篇(一) ts基础类型篇TypeScript 从入门到进阶之基础篇(二) ts进阶类型篇TypeScript 从入门到进阶之基础篇(三) 元组类型篇TypeScript 从入门到进阶之基础篇(四) symbol类型篇TypeScript 从入门到进阶…

AI-图片转换绚丽动漫人物-UGATIT

​​​​​​ &#x1f3e1; 个人主页&#xff1a;IT贫道-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;私聊博主加WX好友&#xff0c;获取更多资料哦~ &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 ​​​​…

P1125 [NOIP2008 提高组] 笨小猴——C++

[NOIP2008 提高组] 笨小猴 题目描述 笨小猴的词汇量很小&#xff0c;所以每次做英语选择题的时候都很头疼。但是他找到了一种方法&#xff0c;经试验证明&#xff0c;用这种方法去选择选项的时候选对的几率非常大&#xff01; 这种方法的具体描述如下&#xff1a;假设 maxn…

【Databend】多表联结,你不会还没有掌握吧!

文章目录 概述和数据准备内连接交叉连接左连接右连接左反和右反连接全连接总结 概述和数据准备 多表联结是两个或多个表的列合并到一个结果集中。Databend 中支持的连接类型有 inner join 、cross join 、natural join 、left join 、right join 、left anti join 、right ant…