常用入门算法

一:快慢指针

适合原地调换一个数组的元素们的位置,使用for循环,声明两个下标,一个移的快,一个移的慢。

快的指针用来往前走,慢的用来停在目标数据上。典型的案例:283. 移动零

1、给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
var moveZeroes = function(nums) {let slowIndex = 0;for (let fastIndex = 0; fastIndex < nums.length; fastIndex++) {if (nums[fastIndex] !== 0) {[nums[slowIndex], nums[fastIndex]] = [nums[fastIndex], nums[slowIndex]];slowIndex++; // 如果遇到0,慢指针不再往前走}}
};

二:双指针

双指针适用于获取两个数组中的相同元素,使用while语句。

首先需要把两个数组排序,比较两个指针的值。如果相同将值推进结果数据,并将两个指针都挪动一位;如果不同,将值小的指针挪动一位;

一直到某个数组遍历结束即可,典型实例:349. 两个数组的交集

题目:
给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的
var intersection = function(nums1, nums2) {// 先滤重nums1.sort((a, b) => a - b);nums2.sort((a, b) => a - b);const result = new Set();let first = 0, second = 0;while (first < nums1.length && second < nums2.length) {if(nums1[first] === nums2[second]){result.add(nums1[first]);first++;second++;}else if(nums1[first] > nums2[second]){second++;}else{first++;}}return [...result];
};

三:快慢指针跟双指针的区别与相同点?

1、区别

  • 使用场景不同。快慢指针使用于一个数组,双指针适用于两个数组。
  • 适用的遍历方法不同。快慢指针适合for循环,双指针适合while循环。

2、相同点

  • 都属于对数组的操作算法
  • 都是操作两个下标 

PS:实践

理论需要配合实践才能真正掌握,

哥们全栈写了一套个人博客 ,代码开源,欢迎大家来玩

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

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

相关文章

C语言中关于switch语句的理解

首先我们来看一下switch的定义 switch&#xff08;整型表达式&#xff09; { case 整型常量表达式: 语句&#xff1b; } 我们在书写时要注意一下&#xff0c;无论是在switch还是case&#xff0c;后面跟着的都一定要是整型&#xff0c;而且case这一行写完时&#xff0c;最后要用…

图片放大后变模糊了怎么办?这个方法惊艳你

我们需要了解为什么图片放大会模糊。在照片放大时&#xff0c;像素也会随之增加。如果图片的像素不足&#xff0c;那么放大后每个像素的大小也会增加&#xff0c;从而导致细节模糊。 那么&#xff0c;面对这个问题&#xff0c;我们该如何解决呢&#xff1f;别急&#xff0c;让…

MySQL 数据页损坏处理思路

文章目录 前言1. 备份恢复2. 强制 InnoDB 恢复2.1 损坏数据页2.2 观察错误日志2.3 设置参数2.4 定位表信息2.5 分析处理2.6 恢复数据 总结 前言 研发自己搭建了一套 MySQL 没有设置双一参数&#xff0c;机房异常断电&#xff0c;导致数据页出现损坏&#xff0c;本篇文章介绍此…

狗笼,预计2028年将以 6.2%的复合年增长率增长

对于想要为爱犬提供安全舒适空间的宠物主人来说&#xff0c;狗笼是必不可少的宠物配件。由于宠物主人的数量不断增加以及人们对宠物安全和福祉的意识不断增强&#xff0c;狗笼市场一直在稳步增长。 全球市场分析&#xff1a;全球狗笼市场预计从 2021 年到 2028 年将以 6.2% 的复…

【C语言】动态内存管理详解

文章目录 前言动态内存管理出现的原因malloc函数和free函数函数原型使用 calloc函数和realloc函数函数原型使用 动态内存使用中容易出现的错误柔性数组总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 动态内存管理是C语言中一项重要的编程任务&…

axios配置请求头content-type 和 get/post请求方式

axios配置请求头content-type https://blog.csdn.net/wojiushiwo945you/article/details/107653962 axios 是Ajax的一个插件&#xff0c;axios虽然是一个插件&#xff0c;但是我们不需要通过Vue.use(axios)来使用&#xff0c;下载完成后&#xff0c;只需在项目中引入即可。(一…

PHP文件上传以及数据写入

文件打开和数据写入 在PHP中&#xff0c;可以通过使用fopen()函数来打开一个文件。它接受两个参数&#xff1a;文件路径和打开模式。打开模式可以是"r"&#xff08;只读&#xff09;, "w"&#xff08;写入&#xff0c;如果文件不存在则创建文件&#xff0…

NFC刷卡soc芯片SI3262集成刷卡+触摸+ACD超低功耗一体

简介 13.56mhz刷卡soc芯片SI3262集成刷卡触摸ACD超低功耗&#xff0c;ACD模式刷卡距离可达到5cm以上&#xff0c;非常适用于小体积门锁&#xff0c;密码锁&#xff0c;柜锁&#xff0c;接下来介绍一下这款芯片的具体功能。 优势 1.超低功耗&#xff0c;最低功耗达 1.7uA&…

揭秘跨境电商ERP源码定制化需求及最佳实践

跨境电商ERP源码的定制化需求是跨境电商企业在整个ERP系统开发实施过程中需要重点关注的问题之一。本文将围绕跨境电商ERP源码定制化的需求和最佳实践展开深入探讨&#xff0c;为行业内的从业者和相关人士提供一些建议和思路。 定制化需求 跨境电商ERP的业务特点决定了对源码…

RivaGAN 水印项目

git地址 https://github.com/DAI-Lab/RivaGAN Dockerfile (/tools下文件为git下的文件) ############################################### # 使用 NVIDIA CUDA 10.0 开发环境作为基础镜像 FROM kaldiasr/kaldi:gpu-ubuntu18.04-cuda10.0 # 设置非交互式安装模式以避免某些命…

Vue 模板编译原理

Vue 模板编译原理是指将 Vue 的模板转换为渲染函数的过程。在 Vue 中&#xff0c;模板被定义为 HTML 代码片段或者在 .vue 单文件组件中定义。当 Vue 实例化时&#xff0c;会将模板编译为渲染函数&#xff0c;该函数可以根据组件的状态生成虚拟 DOM 并更新视图。 Vue 的模板编…

8.小明和完美序列

题目 import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();sc.nextLine();Map<Integer,Intege…

Spring HTTP请求与应答国密算法加解密(对称加密方式SM4)

SM4算法成为行业标准: SM4分组密码算法是2012年3月21日实施的一项行业标准;2021年6月25日,我国SM4分组密码算法作为国际标准ISO/IEC 18033-3:2010/AMD1:2021《信息技术 安全技术 加密算法 第3部分:分组密码 补篇1:SM4》,由国际标准化组织ISO/IEC正式发布;中文名SM4分组…

Flask登陆后登陆状态及密码的修改和处理

web/templates/common 是统一布局 登录成功 后flask框架服务器默认由login.html进入仪表盘页面index.html(/),该页面的设置在 (web/controllers/user/index.py)&#xff0c;如果想在 该仪表盘页面 将 用户信息 展示出来&#xff0c;就得想办法先获取到 当前用户的 登陆状态。…

2022年全国职业院校技能大赛高职组云计算正式赛卷第三场-公有云

2022 年全国职业院校技能大赛高职组云计算赛项试卷 【赛程名称】云计算赛项第三场-公有云 目录 2022 年全国职业院校技能大赛高职组云计算赛项试卷 【赛程名称】云计算赛项第三场-公有云 【任务 1】公有云服务搭建[10 分] 【任务 2】公有云服务运维[10 分] 【任务 3】公有云运维…

兔子的序列

题目&#xff1a; 输入描述&#xff1a; 第一行一个整数 n&#xff0c;表示序列的长度。 第二行有 n 个整数 ai&#xff0c;表示序列中的 n 个数分别是多少。 输出描述&#xff1a; 输出仅一行&#xff0c;表示这个序列的名字&#xff0c;也就是这个序列中最大的非完全平方…

03.MySQL的体系架构

MySQL的体系架构 一、MySQL简介二、MySQL的体系架构三、MySQL的内存结构四、MySQL的文件结构 一、MySQL简介 MySQL是一个开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;由瑞典MySQL AB公司开发&#xff0c;后被Sun公司收购&#xff0c;Sun公司被Oracle…

【Web2D/3D】Canvas(第三篇)

1. 前言 <canvas>是HTML5新增元素&#xff0c;它是一个画板&#xff0c;开发人员基于它的2D上下文或webgl上下文&#xff0c;使用JS脚本绘制简单的动画、可交互画面&#xff0c;甚至进行视频渲染。 本篇介绍基于canvas的2D上下文绘制2D画面的一些方法和属性。 2. canvas…

【leetcode225】用队列实现栈Java代码讲解

12.27 225. 用队列实现栈 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 实现 MyStack 类&#xff1a; void push(int x) 将元素 x 压入栈顶。int pop() 移除…

文件操作安全之-目录穿越流量告警运营分析篇

本文从目录穿越的定义,目录穿越的多种编码流量数据包示例,目录穿越的suricata规则,目录穿越的告警分析研判,目录穿越的处置建议等几个方面阐述如何通过IDS/NDR,态势感知等流量平台的目录穿越类型的告警的线索,开展日常安全运营工作,从而挖掘有意义的安全事件。 目录穿越…