算法修炼之路之双指针含多道leetcode 经典题目

目录

前言 

一:普通双指针

1.经典题目一  283移动0问题

分析

代码实现

2.经典题目二 1089复写0 

分析

代码实现

二:解决成环类问题-快慢指针 

经典例题一 202快乐数

分析 

代码实现 

 三:左右相遇指针

经典例题一 11 盛最多水的容器

分析 

代码实现 

 


接下来的日子会顺顺利利,万事胜意,生活明朗-----------林辞忧

前言 

在解决关于数组的问题时,常常用到双指针的解决方法来优化算法,帮助解决问题,常见的双指针分为普通双指针,快慢指针,左右相遇指针等

一:普通双指针

普通双指针就是解决普通问题,一般是在原数组上改动数据时,有从前向后,从后向前,都从前向后,都从后向前,对数组分块来解决问题等

1.经典题目一  283移动0问题

分析

 

代码实现
class Solution {
public:void moveZeroes(vector<int>& nums) {//双指针方法int cur=0,dest=-1;int n=nums.size();while(cur<n){if(nums[cur]==0){++cur;}else{swap(nums[++dest],nums[cur++]);}}}
};

2.经典题目二 1089复写0 

分析

 

代码实现

 

class Solution {
public:void duplicateZeros(vector<int>& arr) {int cur=0,dest=-1;int n=arr.size();//求最后一个要复写的数据while(cur<n){if(arr[cur])//不为0走一步{++dest;}else//为0走两步{dest+=2;}if(dest>=n-1) break;//边界问题防止越界访问++cur;}//处理边界问题if(dest==n){arr[n-1]=0;dest-=2;cur-=1;}//再从后往前复写数据while(cur>=0){if(arr[cur]){arr[dest--]=arr[cur--];}else{arr[dest--]=0;arr[dest--]=0;--cur;}}}
};

二:解决成环类问题-快慢指针 

在解决一些关于数组或者链表成环类问题时常常用到的是快慢指针,就是slow指针走一步,fast指针一次走两步,常常用相遇来解决问题

经典例题一 202快乐数

分析 

代码实现 
class Solution {
public:int bitSum(int n)//计算n的平方和{int sum=0;while(n){int tmp=n%10;sum+=tmp*tmp;n/=10;}return sum;}bool isHappy(int n) {int slow=n,fast=bitSum(n);//slow为第一个位置,fast为第二个位置while(slow!=fast)//走到直至相遇{slow=bitSum(slow);fast=bitSum(bitSum(fast));}if(slow==1)//是1的话则是快乐数{return true;}return false;}
};

 三:左右相遇指针

说明一下,左右相遇指针是自己理解取的名字,意思就是这类题定义的双指针得从两端向中间走,直至相遇

经典例题一 11 盛最多水的容器

分析 

对于这道题大多人首先想到的是暴力求解,求出每两个数据之间的容量,在求出最大的一个

但这样的话对于这道题,这样做的话会超出时间限制的,因此得采取其他方法

代码实现 
class Solution {
public:int maxArea(vector<int>& height) {int left=0,right=height.size()-1;//左右双指针int ret=0;while(left<right){int v=min(height[left],height[right])*(right-left);//算出数据ret=max(ret,v);//求出最大的一个数据,存放在ret中//移动指针if(height[left]<height[right]){++left;}else{--right;}}return ret;}
};
 

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

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

相关文章

基于Whisper语音识别的实时视频字幕生成 (一): 流式显示视频帧和音频帧

Whishow Whistream&#xff08;微流&#xff09;是基于Whisper语音识别的的在线字幕生成工具&#xff0c;支持rtsp/rtmp/mp4等视频流在线语音识别 1. whishow介绍 whishow&#xff08;微秀&#xff09;是python实现的在线音视频流播放器&#xff0c;支持rtsp/rtmp/mp4等流式输…

说说TCP为什么需要三次握手和四次挥手?

文章目录 一、三次握手为什么不是两次握手? 二、四次挥手四次挥手原因 三、总结参考文献 一、三次握手 三次握手&#xff08;Three-way Handshake&#xff09;其实就是指建立一个TCP连接时&#xff0c;需要客户端和服务器总共发送3个包 主要作用就是为了确认双方的接收能力和…

将File转为MultipartFile

将File转为MultipartFile 引言一、File转MultipartFile的实现方法二、生产环境考量总结 引言 在处理文件上传功能时&#xff0c;我们常常会遇到需要将本地File对象转换为Spring Web框架中的MultipartFile对象的情况。这种转换在开发阶段可能通过自定义方法得以实现&#xff0c;…

毅速ESU丨增材制造有助于传统制造企业打造新增长极

在科技浪潮的推动下&#xff0c;传统制造企业正面临着前所未有的挑战与机遇。产品的复杂程度不断提升&#xff0c;个性化需求层出不穷&#xff0c;越来越短的生产周期&#xff0c;不断升级的品质要求等&#xff0c;传统的生产模式在应对这些变化并不容易。而增材制造&#xff0…

Pytorch:一维卷积及其伴随的定义

文章目录 一、数学表达二、步长2.1、步长的作用2.2、步长的示例步长为 1步长为 2 2.3、总结 三、零填充3.1、零填充的作用&#xff1a;3.2、类型和大小3.3、 应用示例 四、通道数4.1、通道数的定义4.2、示例说明4.3、深度学习中的应用 五、batch_size5.1、batch_size和数据形状…

AI赋能校园管理,打造平安智慧校园解决方案

背景&#xff1a; 2020年教育部办公厅印发《教育系统安全专项整治三年行动实施方案》&#xff0c;文中要求&#xff0c;学校在所辖范围内组织开展安全专项整治三年行动&#xff0c;健全完善安全责任体系&#xff0c;建立风险管控和隐患治理的安全防控体系&#xff0c;开展消防等…

在线药房数据惨遭Ransomhub窃取,亚信安全发布《勒索家族和勒索事件监控报告》

本周态势快速感知 本周全球共监测到勒索事件119起&#xff0c;与上周相比勒索事件有所增长。 本周Blacksuit是影响最严重的勒索家族&#xff0c;Ransomhub和Blackbasta恶意家族紧随其后&#xff0c;从整体上看Lockbit3.0依旧是影响最严重的勒索家族&#xff0c;需要注意防范。…

基于 YOLOv9 的自定义数据集目标检测

点击下方卡片&#xff0c;关注“小白玩转Python”公众号 在本指南中&#xff0c;我们将展示使用自定义数据集训练 YOLOv9 模型的过程。具体而言&#xff0c;我们将提供一个示例&#xff0c;重点介绍训练一个视觉模型来识别篮球场上的篮球运动员。但是&#xff0c;这个指南是多功…

并查集的实现与应用(力扣)

并查集的实现与应用&#xff08;力扣&#xff09; 并查集的实现力扣323 130 990 学习地址 并查集的实现 package com.caoii;/**program:labu-pratice-study*package:com.caoii*author: Alan*Time: 2024/4/12 21:53*description: 并查集的实现*/public class UnionFind {// 记…

Web中使用Weblogic用户

WebLogic用户&#xff0c;组设置 1. 登录weblogic console, domain结构中选择Security Realms&#xff0c;显示安装时默认创建的Realm &#xff1a; myrealm 2. 点击myrealm, 选择 users and Group&#xff0c; 追加用户和组 选择既存的权限组追加到新规的组中&#xff0c;赋予…

servicecomb bmi例子无法正常启动

前端报错404&#xff0c;后端显示&#xff1a;[ntloop-thread-7] o.a.s.c.rest.locator.OperationLocator : locate path failed, status:Not Found, http method:GET, path:/, microserviceName:gateway 原因&#xff1a; 在resource-->application.yml中&#xff1a; # …

java智慧校园系统源码saas电子班牌固件安卓7.1+Java Android原生系统源码

java智慧校园系统源码saas电子班牌固件安卓7.1&#xff0b;Java Android原生系统源码 智慧校园是促进信息技术与教育教学深度有效融合、提高学与教的效果为目的&#xff0c;以物联网、云计算、大数据分析等新技术为核心技术&#xff0c;提供一种环境全面感知、智慧型、数据化、…

数据结构——简单二叉树的性质和遍历

二叉树 两个值得注意的性质&#xff1a; 1.二叉树是有序树&#xff0c;这个我想了很久不知道为什么&#xff0c;可是为什么二叉树只有三种遍历方式&#xff0c;而不是六种&#xff1f;说明每个形态不同的树都有不同的含义。那完全二叉树和平衡二叉树呢&#xff1f;也是一样的…

.NET/C#汇总 —— 多线程

1.根据线程安全的相关知识,分析以下代码,当调⽤test⽅法时i>10时是否会引起死锁?并简要说 明理由。 public void test(int i) {lock(this){if (i>10){i--;test(i);}} } 不会发⽣死锁,(但有⼀点int是按值传递的,所以每次改变的都只是⼀个副本,因此不会出现死锁。…

Linux 删除文件或文件夹命令(新手)

一、删除文件夹 rm -rf 路径/目录名 1 强制删除文件夹及其子文件。 二、删除文件/文件夹&#xff1a;rm 命令 rm 删除命令&#xff0c;它可以永久删除文件系统中指定的文件或目录。 rm [选项] 文件或目录 选项&#xff1a; -f&#xff1a;强制删除&#xff08;force&am…

前端大屏项目适配方法

要在F11全屏模式下查看 方法一&#xff0c;rem font-size 动态设置HTML根字体大小 和 body 字体大小&#xff08;lib_flexible.js&#xff09; 将设计稿的宽&#xff08;1920&#xff09;平均分成 24 等份&#xff0c; 每一份为 80px。HTML字体大小就设置为 80 px&#xff…

SonarQube 9.9.4 LTS社区版安装

目标 安装个SonarQube社区版. 安装SonarQube9.9.4 LTS社区版 https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.4.87374.zip # 切换到安装目录 cd /opt # 下载安装包 sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube…

[管理者与领导者-160] :社交策略和智慧-3,如何用积极的语言表达他人的赞美,构建和谐的人际关系

目录 一、用积极的语言表达他人的赞美他人的重要性 1.1 消极语言的危害 1.2 批评性语言的危害 1.3 积极的语言表达他人的赞美他人的重要性 二、有哪些积极的赞美他人的语言&#xff1f; 2.1 有哪些消极性语言 2.2 有哪些积极性语言 2.3 有哪些批评性语言 2.4 有哪些赞…

C语言--结构体大小

基本数据类型占用的字节数分别为:char(1),short(2),int(4),long(4),long long(8),float(4),double(8)。 分析一下下面结构体占用的字节数。 struct A { int a; }; struct B { char a; int b; }; int main() { printf("sizeof(struct A)%d\n", sizeof(struct A));//测…

Nginx小册(博客笔记迁移)

nginx基础 1.常用命令 nginx -v #查看版本 ps -ef | grep nginx #输出linux进程、 nginx #启动nginx进程 nginx -s reload #重载配置 nginx -s stop # 停止进程 nginx -t # 检查是否有语法错误&#xff0c;以及配置文件地址2.nginx的配置文件 # 用户组的设置 windows上不生…