当前位置: 首页 > 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…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

GAN模式奔溃的探讨论文综述(一)

简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...

GB/T 43887-2024 核级柔性石墨板材检测

核级柔性石墨板材是指以可膨胀石墨为原料、未经改性和增强、用于核工业的核级柔性石墨板材。 GB/T 43887-2024核级柔性石墨板材检测检测指标&#xff1a; 测试项目 测试标准 外观 GB/T 43887 尺寸偏差 GB/T 43887 化学成分 GB/T 43887 密度偏差 GB/T 43887 拉伸强度…...

Spring事务传播机制有哪些?

导语&#xff1a; Spring事务传播机制是后端面试中的必考知识点&#xff0c;特别容易出现在“项目细节挖掘”阶段。面试官通过它来判断你是否真正理解事务控制的本质与异常传播机制。本文将从实战与源码角度出发&#xff0c;全面剖析Spring事务传播机制&#xff0c;帮助你答得有…...

基于谷歌ADK的 智能产品推荐系统(2): 模块功能详解

在我的上一篇博客&#xff1a;基于谷歌ADK的 智能产品推荐系统(1): 功能简介-CSDN博客 中我们介绍了个性化购物 Agent 项目&#xff0c;该项目展示了一个强大的框架&#xff0c;旨在模拟和实现在线购物环境中的智能导购。它不仅仅是一个简单的聊天机器人&#xff0c;更是一个集…...

ABAP设计模式之---“Tell, Don’t Ask原则”

“Tell, Don’t Ask”是一种重要的面向对象编程设计原则&#xff0c;它强调的是对象之间如何有效地交流和协作。 1. 什么是 Tell, Don’t Ask 原则&#xff1f; 这个原则的核心思想是&#xff1a; “告诉一个对象该做什么&#xff0c;而不是询问一个对象的状态再对它作出决策。…...

解密鸿蒙系统的隐私护城河:从权限动态管控到生物数据加密的全链路防护

摘要 本文以健康管理应用为例&#xff0c;展示鸿蒙系统如何通过细粒度权限控制、动态权限授予、数据隔离和加密存储四大核心机制&#xff0c;实现复杂场景下的用户隐私保护。我们将通过完整的权限请求流程和敏感数据处理代码&#xff0c;演示鸿蒙系统如何平衡功能需求与隐私安…...

第21节 Node.js 多进程

Node.js本身是以单线程的模式运行的&#xff0c;但它使用的是事件驱动来处理并发&#xff0c;这样有助于我们在多核 cpu 的系统上创建多个子进程&#xff0c;从而提高性能。 每个子进程总是带有三个流对象&#xff1a;child.stdin, child.stdout和child.stderr。他们可能会共享…...

开源 vGPU 方案:HAMi,实现细粒度 GPU 切分

本文主要分享一个开源的 GPU 虚拟化方案&#xff1a;HAMi&#xff0c;包括如何安装、配置以及使用。 相比于上一篇分享的 TimeSlicing 方案&#xff0c;HAMi 除了 GPU 共享之外还可以实现 GPU core、memory 得限制&#xff0c;保证共享同一 GPU 的各个 Pod 都能拿到足够的资源。…...