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

算法:双指针系列(一)

在这里插入图片描述

双指针系列

  • 一、移动零
  • (一)题目分析
  • (二)代码展示
  • 二、复写零
  • (一)题目分析
  • (二)代码展示
  • 三、快乐数
  • (一)题目分析
  • (二)代码展示
  • (四)总结

一、移动零

点击跳往题目
在这里插入图片描述

(一)题目分析

将数组分为三个区域(已遍历非零区, 已遍历零区,未遍历区),用两个指针来维护这三个区域。
在这里插入图片描述

(二)代码展示

class Solution {
public:void moveZeroes(vector<int>& nums) {int des = -1, cur = 0;while(cur < nums.size()){if(nums[cur] != 0) {des += 1;swap(nums[cur], nums[des]);}cur += 1;}//nums.resize(des + 1);}
};

二、复写零

在这里插入图片描述

(一)题目分析

这道题目中,也是采取双指针进行复写。我们可以开辟一段新空间复写比较简单,题目要求在原生空间复写。如果此时直接使用双指针会导致数组空间覆盖,可以先用双指针遍历找到复写的最后一个元素,反向复写,这样就不会出现问题。

(二)代码展示

class Solution {
public:void duplicateZeros(vector<int>& arr) {int cur = -1, dest = -1;while (dest < ((int)arr.size() - 1)) {if (!arr[++cur]) dest++;dest++;}if (dest == arr.size()) {arr[--dest] = 0;dest--;cur--;}while (cur >= 0) {if (arr[cur] == 0) arr[dest--] = 0;arr[dest--] = arr[cur--];}}
};

三、快乐数

(一)题目分析

我们将这道题可以与链表的判环问题结合起来,要么存在循环,要么这个数就是快乐数。
只需要创建一个getNext 函数即可。

(二)代码展示

在这里插入图片描述

class Solution {
public:int getNext(int val) {int ret = 0;while (val > 0) {int temp = val % 10;ret = temp * temp + ret;val /= 10;}return ret;}bool isHappy(int n) {int fast = getNext(n), slow = n;while (fast != 1 && fast != slow) {fast = getNext(getNext(fast));slow = getNext(slow);}return fast == 1;}
};

(四)总结

涉及到元素的移动,数组的分区,亦或是判断是否有环(追击问题),双指针是不错的选择。

相关文章:

算法:双指针系列(一)

双指针系列 一、移动零&#xff08;一&#xff09;题目分析&#xff08;二&#xff09;代码展示二、复写零&#xff08;一&#xff09;题目分析&#xff08;二&#xff09;代码展示三、快乐数&#xff08;一&#xff09;题目分析&#xff08;二&#xff09;代码展示&#xff08…...

跟《经济学人》学英文:2024年09月28日这期 The curse of the Michelin star

The curse of the Michelin star Restaurants awarded the honour are more likely to close, research finds 原文&#xff1a; The twelve new restaurants added to the New York Michelin Guide this month, serving up cuisine ranging from “haute French” to “eco…...

Java Set 的介绍与实现原理

什么是 Set 在 Java 中&#xff0c;Set 是一种集合类型&#xff0c;它不允许重复的元素。Set 接口是 Java Collections Framework 的一部分&#xff0c;主要用于存储不重复的值。常见的实现类包括 HashSet、LinkedHashSet 和 TreeSet。 实现原理 1. HashSet HashSet 是最常…...

我谈均值平滑模板——给均值平滑模板上升理论高度

均值平滑&#xff08;Mean Smoothing&#xff09;&#xff0c;也称为盒状滤波&#xff08;Box Filter&#xff09;&#xff0c;通过计算一个像素及其周围像素的平均值来替换该像素的原始值&#xff0c;从而达到平滑图像的效果。 均值平滑通常使用一个模板&#xff08;或称为卷…...

WordPress添加https协议致使后台打不开解决方法

由于删除WordPress缓存插件后操作不当&#xff0c;在加上升级处理&#xff0c;致使茹莱神兽博客的首页出现了https不兼容问题&#xff0c;WordPress后台也无法登陆&#xff0c;链接被误认为是定向重置次数过多&#xff0c;在网上找了好久的答案。 还有就是求助了好些人&#xf…...

如何使用pymysql和psycopg2执行SQL语句

在Python中&#xff0c;pymysql和psycopg2是两个非常流行的库&#xff0c;用于与MySQL和PostgreSQL数据库进行交互。本文将详细介绍如何使用这两个库来执行SQL查询、插入、更新和删除操作。 1. 准备工作 首先&#xff0c;确保已经安装了pymysql和psycopg2库。如果尚未安装&a…...

linux无法使用ll命令

ll命令是ls -l的别名&#xff0c;无法使用通常是该用户没有该别名配置&#xff0c;只需要简单添加即可使用 修改~/.bashrc # 备份 cp ~/.bashrc ~/.bashrc.source # 编辑 vim ~/.bashrc添加如下内容 # 别名 alias llls -l加载配置 source ~/.bashrc...

STM32输入捕获模式详解(上篇):原理、测频法与测周法

1. 前言 在嵌入式系统的开发过程中&#xff0c;常常需要对外部信号进行精确的时间测量&#xff0c;如测量脉冲信号的周期、频率以及占空比等。STM32系列微控制器提供了丰富的定时器资源&#xff0c;其中的输入捕获&#xff08;Input Capture, IC&#xff09;模式能实现对信号的…...

面试中遇到的关于Transformer模型的问题有哪些?

Transformer是深度学习中极具影响力的模型架构之一&#xff0c;广泛应用于自然语言处理、计算机视觉等领域。它通过自注意力机制和并行计算等特点&#xff0c;取得了比传统模型&#xff08;如RNN、LSTM&#xff09;更优异的性能。本文将针对Transformer的多个关键问题进行详细探…...

【UE】自动添加Megascans所有资产到自己的账户

1. 复制如下代码&#xff1a; ((async (startPage 0, autoClearConsole true) > {const getCookie (name) > {const value ; ${document.cookie};const parts value.split(; ${name});if (parts.length 2) return parts.pop().split(;).shift();}const callCacheA…...

【函数】4.函数的单调性

本节课没有笔记示例&#xff0c;自己做好笔记&#xff01; 复合函数的单调性 最值 没讲 提醒我...

网格剖分-耳切法效果展示

1.前言 将简单多边形转换成一组由同样顶点组成的三角形集合是计算机图形学中的一个经典问题。问题中&#xff0c;简单多边形是指由一组有序顶点组成的&#xff0c;点V0~点Vn-1。相邻的顶点之间通过边(Vi,Vi-1)连接&#xff0c;并且边&#xff08;Vn-1,V0&#xff09;连接起始点…...

电磁力、强相互作用力、弱相互作用力、强核力,以及它们之间的关系

电磁力、强相互作用力、弱相互作用力、强核力&#xff0c;以及它们之间的关系: 电磁力 (Electromagnetic Force)&#xff1a; 定义&#xff1a;电磁力是带电粒子之间通过电荷相互作用产生的力。它由电场和磁场共同作用&#xff0c;影响带电粒子的运动。传递粒子&#xff1a;电磁…...

2.安装keepalived详细过程

1.下载地址: keepalived-2.3.1 keepalived-2.1.2 keepalived-2.0.18 三个版本tar包 2.keepalived安装详细过程 (1) 解压keepalived tar包 tar -zxvf keepalived-2.0.18.tar.gz(2)进入keepalived目录然后配置 #进入keepalived目录 cd keepalived-2.0.18/ #配置keepalived[配…...

面试题1-fail-safe机制与fail-fast 机制

1.定义 Fail-safe 和 Fail-fast&#xff0c;是多线程并发操作集合时的一种失败处理机制。 1.1.Fail-Safe机制 1.1.1.定义 Fail-Safe 机制的设计目标是在发生故障时&#xff0c;系统仍然能够继续运行&#xff0c;尽量避免导致整个系统崩溃。即使发生错误或异常&#xff0c;系统…...

C/C++复习(一)

1.sizeof 关于sizeof我们是经常使用的&#xff0c;所以使用方法就不需要提及了&#xff0c;这里我们需要注意的是&#xff0c;sizeof 后面如果是表达式可以不用括号&#xff0c;并且sizeof实际上不参与运算&#xff0c;返回的是内容的类型大小&#xff08;size_t类型&#xff0…...

iOS Object-C 将数组倒置(倒叙)

使用NSArray自带的对象方法:reverseObjectEnumerator 代码如下: NSArray * tempArray [[NSArray alloc]initWithObjects:"a","b","c","d", nil]; //将tempArray转换成["d","c","b","a"]; …...

动态轻量级线程池项目

动态线程池&#xff1a; 使用线程池ThreadPoolExecutor过程中你是否有以下痛点呢&#xff1f; ① 代码中创建了一个ThreadPoolExecutor&#xff0c;但是不知道参数设置多少比较合适。 ② 凭经验设置参数值&#xff0c;上线后发现需要调整&#xff0c;改代码重新发布服务&…...

【AI知识点】批归一化(Batch Normalization)

更多AI知识点总结见我的专栏&#xff1a;【AI知识点】 AI论文精读、项目和一些个人思考见我另一专栏&#xff1a;【AI修炼之路】 有什么问题、批评和建议都非常欢迎交流&#xff0c;三人行必有我师焉&#x1f601; 批归一化&#xff08;Batch Normalization&#xff0c;BN&…...

【低代码】前端低代码开发日记2:遇到的问题(1)双向绑定

在前期的快速迭代阶段&#xff0c;虽然界面有些杂乱&#xff0c;但整体功能尚能凑合运行。真正让人头疼的&#xff0c;还是接下来几个关键功能的实现。 遇到的问题 双向绑定 在Vue中&#xff0c;v-model提供了方便的双向绑定功能&#xff0c;它是modelValue属性和onUpdate:m…...

Figma设计稿秒变Vue代码?实测Trae AI的“图像转代码”功能,还原度到底有多高

Figma设计稿秒变Vue代码&#xff1f;实测Trae AI的"图像转代码"功能还原度与实战应用 设计师与前端开发者的协作痛点由来已久。当Figma画布上精美的界面设计需要转化为实际可运行的代码时&#xff0c;往往意味着数小时的像素级测量、CSS编写和响应式调试。这种设计到…...

intv_ai_mk11部署避坑指南:端口映射失败、响应延迟、乱码重复等问题解决方案

intv_ai_mk11部署避坑指南&#xff1a;端口映射失败、响应延迟、乱码重复等问题解决方案 1. 环境准备与快速部署 1.1 系统要求 操作系统&#xff1a;Ubuntu 20.04/22.04 LTSGPU&#xff1a;NVIDIA显卡&#xff08;至少16GB显存&#xff09;内存&#xff1a;32GB以上存储&…...

短视频 SEO 如何提高网站的搜索排名

为什么短视频 SEO 是提高网站搜索排名的关键 在当今数字化时代&#xff0c;短视频平台已经成为人们获取信息和娱乐的主要渠道。短视频的流行不仅改变了人们的观看习惯&#xff0c;还深刻影响了网络营销的方式。如何利用短视频 SEO&#xff08;搜索引擎优化&#xff09;来提高网…...

HC-SR501人体红外传感器:从参数解析到树莓派实战应用

1. HC-SR501人体红外传感器核心参数解析 第一次接触HC-SR501时&#xff0c;我被它简单的三针脚设计迷惑了——这么小的模块真能检测人体移动&#xff1f;实测后发现这简直是智能家居项目的"火眼金睛"。让我们拆解它的关键参数&#xff0c;你会发现每个调节旋钮背后都…...

dockerc故障排除终极指南:10个常见错误和解决方案清单

dockerc故障排除终极指南&#xff1a;10个常见错误和解决方案清单 【免费下载链接】dockerc container image to single executable compiler 项目地址: https://gitcode.com/gh_mirrors/do/dockerc dockerc作为一款container image to single executable compiler工具&…...

OpenHD图传实战:如何为你的树莓派3B天空端配置720P 60帧,实现低延迟流畅回传

OpenHD图传实战&#xff1a;树莓派3B天空端720P 60帧低延迟优化指南 当你已经完成OpenHD图传系统的基础搭建&#xff0c;却发现默认配置下的画面卡顿、延迟明显时&#xff0c;这篇文章将带你深入系统核心&#xff0c;通过精准调参实现从"勉强能用"到"专业级流畅…...

告别手动调参!用Simulink扫频法+PID Tuner,10分钟搞定升降压电路的PI控制器设计

10分钟自动化PI设计&#xff1a;Simulink扫频与PID Tuner在升降压电路中的实战技巧 电力电子工程师们对这样的场景一定不陌生&#xff1a;面对一个全新的升降压电路拓扑&#xff0c;为了获得稳定的输出电压&#xff0c;不得不花费数小时甚至数天时间反复调整PI控制器的参数。传…...

QKeyMapper:Windows终极按键映射工具,无需重启立即生效

QKeyMapper&#xff1a;Windows终极按键映射工具&#xff0c;无需重启立即生效 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper&#xff0c;Qt开发Win10&Win11可用&#xff0c;不修改注册表、不需重新启动系统&#xff0c;可立即生效和停止&#xff0c;新增虚拟游戏…...

如何实现格式保留翻译?Hunyuan MT1.5结构化文本处理实战解析

如何实现格式保留翻译&#xff1f;Hunyuan MT1.5结构化文本处理实战解析 1. 引言&#xff1a;当翻译遇到格式难题 你有没有遇到过这样的尴尬场景&#xff1f;好不容易找到一款翻译工具&#xff0c;把英文网页翻译成了中文&#xff0c;结果发现所有链接都失效了&#xff0c;排…...

Pixel Couplet Gen实操手册:自定义门神像素图替换与SVG动画扩展方法

Pixel Couplet Gen实操手册&#xff1a;自定义门神像素图替换与SVG动画扩展方法 1. 项目概述 Pixel Couplet Gen是一款融合传统春节元素与现代像素艺术风格的AI春联生成工具。通过ModelScope大模型的文本生成能力&#xff0c;结合精心设计的8-bit视觉风格&#xff0c;为用户提…...