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

专题一:双指针【优选算法】

双指针应用场景:

数组划分、数组分块

 

目录

 

一、移动0

 二、复写0 从后向前

  三、快乐数 链表带环

 四、盛水最多的容器 单调性+双指针

五、有效三角形个数 单调性+双指针

 六、和为s的两个数字

七、三数之和 细节多 需再练


一、移动0

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

 二、复写0 从后向前

c

细节:当最后cur = 0时,要小心越界。

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

  三、快乐数 链表带环

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

 四、盛水最多的容器 单调性+双指针

注意:高度由矮的决定。

class Solution {
public:int maxArea(vector<int>& height) {int n = height.size();int left = 0,right = n-1;int ret = 0;while(left < right){int v = min(height[left],height[right])*(right-left);ret = max(ret,v);if(height[left] < height[right]) left++;else right--;}return ret;}
};

五、有效三角形个数 单调性+双指针

核心:两小边之和大于第三边就可以组成三角形。

 

class Solution {
public:int triangleNumber(vector<int>& nums) {sort(nums.begin(),nums.end());int count = 0;for(int m = nums.size()-1;m >= 0;m--){int l = 0,r = m-1;while(l < r){if(nums[l] + nums[r] > nums[m]) count += (r-l),r--;else l++;}}return count;}
};

 六、和为s的两个数字

出现上面这样的报错是因为编译器觉得可能没有返回值,最后随便返回一个就行。 

七、三数之和 细节多 需再练

注意:要避免越界。 

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {int n = nums.size();sort(nums.begin(),nums.end());vector<vector<int>> ret;int i = 0;while(i < n){if(nums[i] > 0)break;int left = i+1,right = n-1,target = -nums[i];while(left < right){int sum = nums[left]+nums[right];if(sum < target) left++;else if(sum > target) right--;else {ret.push_back({nums[i],nums[left],nums[right]});left++,right--;while(left < right && nums[left] == nums[left-1]) left++;while(left < right && nums[right] == nums[right+1]) right--;} }i++;while(i < n && nums[i] == nums[i-1]) i++;}return ret;}
};

相关文章:

专题一:双指针【优选算法】

双指针应用场景&#xff1a; 数组划分、数组分块 目录 一、移动0 二、复写0 从后向前 三、快乐数 链表带环 四、盛水最多的容器 单调性双指针 五、有效三角形个数 单调性双指针 六、和为s的两个数字 七、三数之和 细节多 需再练 一、移动0 class Solution { public:void move…...

蓝桥等考Python组别十二级007

第一部分:选择题 1、Python L12 (15分) 运行下面程序,输出的结果是( )。 lis = [A, B, C, D, E, F] print(lis[0 : 3]) [A, B, C][A, B][A, B, C, D][B, C, D]正确答案:A 2...

全方位介绍工厂的MES质量检验管理系统

一、MES质量检验管理系统的定义&#xff1a; MES质量检验管理系统是基于制造执行系统的框架和功能&#xff0c;专注于产品质量的控制和管理。它通过整合和优化质量检验流程&#xff0c;提供实时的数据采集、分析和反馈&#xff0c;帮助工厂实现高效的质量管理。该系统涵盖了从…...

避免风险,亚马逊、沃尔玛、阿里国际站选择什么样的测评方式最安全?

亚马逊、沃尔玛、速卖通、阿里国际站上做测评是最有效的推广手段之一&#xff0c;而测评又存在很大的风险。但是测评的风险来自哪里&#xff1f;什么样的测评方式才安全呢&#xff1f; 因为平台大数据风控点很多&#xff0c;根据洪哥六七年的测评经验&#xff0c;风控包括以下…...

【C语言】语法--联合体union详解

本文参考博客: https://blog.csdn.net/m0_57180439/article/details/120417270 定义及示例: 联合是一种特殊的自定义类型,该种类型定义的变量也包含一系列的成员,特征是这些成员共用同一块空间,所以联合体也被称为共用体。 #include<stdio.h> union Un//联合类型…...

接口测试复习

一。基本概念 接口概念&#xff1a;系统与系统之间 数据交互的通道。 接⼝测试概念&#xff1a;校验 预期结果 与 实际结果 是否⼀致。 特征&#xff1a; 测试⻚⾯测试发现不了的问题。&#xff08;因为&#xff1a;接⼝测试 绕过前端界⾯。 &#xff09; 符合质量控制前移理…...

获取医疗器械板块的个股列表

获取医疗器械板块的个股列表&#xff0c;用python爬虫做到&#xff08;数据网址&#xff1a;板块 - 医疗器械概念 - 股票行情中心 - 搜狐证券&#xff09; import requests from bs4 import BeautifulSoup # 获取医疗器械概念个股列表url "https://q.stock.sohu.com/cn/…...

1026 程序运行时间

要获得一个 C 语言程序的运行时间&#xff0c;常用的方法是调用头文件 time.h&#xff0c;其中提供了 clock() 函数&#xff0c;可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间。这个时间单位是 clock tick&#xff0c;即“时钟打点”。同时还有一个常数 CLK_TCK&…...

博途1200/1500 ALT指令

SMART PLC的ALT指令实现代码,请查看下面文章博客 SMART PLC如何构造ALT指令_smart200类似alt指令-CSDN博客单按钮启停这些老生常谈的问题,很多人感兴趣。这篇博文讨论下不同的实现方法,希望对大家有所帮助。指令虽然简单,但是在编程的时候合理使用对我们高效率编程帮助还是…...

11、视频分类建议

8、绩效看板与日清计划 9、大小屏分离与精细化审核 10、质量审核的设立与合并 视频分类印象深刻&#xff0c;因为这是我亲手做的第一个增效工具。 审核的其中一个任务是保证视频分类信息的准确性&#xff0c;账号本身是有一个缺省分类的&#xff0c;内容上传之后默认使用账号…...

【计算机组成原理】考研真题攻克与重点知识点剖析 - 第 2 篇:数据的表示和运算

前言 本文基础知识部分来自于b站&#xff1a;分享笔记的好人儿的思维导图与王道考研课程&#xff0c;感谢大佬的开源精神&#xff0c;习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析&#xff0c;本人技术…...

使用maven框架搭建一个IDEA插件项目

以下是使用 Maven 框架搭建 IDEA 插件项目的步骤&#xff1a; 打开 IDEA&#xff0c;点击 File -> New -> Project&#xff0c;选择 Maven。 在弹出的 New Project 窗口中&#xff0c;选择 Maven&#xff0c;然后选择 Create from archetype&#xff0c;找到 Maven 插件…...

第二届全国高校计算机技能竞赛——C++赛道 题解

Powered by:NEFU AB-IN Link 文章目录 第二届全国高校计算机技能竞赛——C赛道A 互不侵犯题意思路代码 B 奖学金题意思路代码 C 领导者题意思路代码 D 空调题意思路代码 E 字符操作变换题意思路代码 第二届全国高校计算机技能竞赛——C赛道 A 互不侵犯 题意 在象棋中&#xff…...

八大排序源码(含优化)

文章目录 1、直接插入排序2、希尔排序3、选择排序4、冒泡排序5、堆排序6、快速排序快速排序递归实现霍尔法挖坑法前后指针法快速排序小区间优化 快速排序非递归实现 7、归并排序归并排序递归实现归并排序非递归 8、计数排序 大家好&#xff0c;我是纪宁&#xff0c;这篇文章是关…...

单调队列---数据结构与算法

简介 队列也是一种受限制的线性表和栈相类似&#xff0c;栈是先进后出&#xff0c;而队列是先进先出&#xff0c;就好像一没有底的桶&#xff0c;往里面放东西&#xff0c;如图 在这里也是用数组来实现队列&#xff0c;用数组实现的叫做顺序队列 队列的数组模拟 const int N…...

小程序如何使用自定义组件

使用自定义组件的步骤如下&#xff1a; 创建自定义组件&#xff1a;在小程序项目根目录下的 components 文件夹中创建一个文件夹&#xff0c;然后在该文件夹中创建一个 .json 文件、一个 .wxml 文件和一个 .js 文件&#xff0c;这三个文件分别对应组件的配置、模板和逻辑。 在…...

归并排序含非递归版

目录 1.归并排序的原理 2.实现归并排序 2.1框架 2.2区间问题和后序遍历 2.3归并并拷贝 2.4归并排序代码 2.5测试 3.非递归实现归并排序 3.1初次实现 3.2测试 3.3修改 3.4修改测试 1.归并排序的原理 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治…...

项目进展(八)-编写代码,驱动ADS1285

一、代码 根据芯片的数据手册编写部分驱动&#xff0c;首先看部分引脚的波形&#xff1a; DRDY: CS&#xff1a; 首先在代码初始化时连续写入三个寄存器&#xff1a; void WriteReg(uint8_t startAddr, uint8_t *regData, uint8_t number) {uint8_t i0;// 循环写number1次…...

【MyBatis-Plus】快速精通Mybatis-plus框架—快速入门

大家在日常开发中应该能发现&#xff0c;单表的CRUD功能代码重复度很高&#xff0c;也没有什么难度。而这部分代码量往往比较大&#xff0c;开发起来比较费时。 因此&#xff0c;目前企业中都会使用一些组件来简化或省略单表的CRUD开发工作。目前在国内使用较多的一个组件就是…...

docker 安装kafka

运行容器 zookeeper: [rootk8s-master ~]# docker run -d --restartalways --log-driver json-file --log-opt max-size100m --log-opt max-file2 --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime zookeeper c603f292813cfd6e2b16fff88a9767cc86fc9bba34d82…...

C++的std--ranges中的优化异构

C的std::ranges中的优化异构&#xff1a;现代编程的效率革命 C20引入的std::ranges库彻底改变了算法和容器的交互方式&#xff0c;其中优化异构&#xff08;Heterogeneous Optimization&#xff09;技术尤为引人注目。传统算法在处理不同类型的数据时&#xff0c;往往需要显式…...

bert-base-chinese新手教程:从零开始学习中文预训练模型部署与使用

bert-base-chinese新手教程&#xff1a;从零开始学习中文预训练模型部署与使用 1. 认识bert-base-chinese模型 1.1 什么是BERT模型 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是Google在2018年发布的预训练语言模型。它通过大规…...

从“连连看”到DFA最小化:一个游戏化思路帮你彻底理解状态等价

从“连连看”到DFA最小化&#xff1a;用游戏化思维破解编译原理难题 编译原理作为计算机科学的核心课程之一&#xff0c;常常让初学者望而生畏。特别是当教材开始讨论"确定性有限自动机&#xff08;DFA&#xff09;最小化"这类概念时&#xff0c;那些抽象的状态转换图…...

深度 | 电子材料研发(光刻胶/OLED等)迈入智能时代,当电子材料研发进入“GPT时代”,企业该如何重构创新引擎?

【电子材料系列专题1】在半导体、显示、先进封装与电子化学品领域&#xff0c;材料始终决定性能上限。无论是光刻胶、OLED发光材料、封装胶&#xff0c;还是高纯电子特气&#xff0c;随着制程逼近纳米乃至埃米级节点&#xff0c;热力学稳定性、光化学反应精度、流变特征和痕量杂…...

ESP WiFi中继器终极配置指南:从零开始打造智能无线网络扩展器

ESP WiFi中继器终极配置指南&#xff1a;从零开始打造智能无线网络扩展器 【免费下载链接】esp_wifi_repeater A full functional WiFi Repeater (correctly: a WiFi NAT Router) 项目地址: https://gitcode.com/gh_mirrors/es/esp_wifi_repeater 想要轻松扩展WiFi覆盖范…...

3分钟掌握图片比对:PicQuickCompare让你高效发现视觉差异

3分钟掌握图片比对&#xff1a;PicQuickCompare让你高效发现视觉差异 【免费下载链接】PicQuickCompare Compare two pictures quickly 项目地址: https://gitcode.com/gh_mirrors/pi/PicQuickCompare PicQuickCompare是一款专为快速图片比对而设计的轻量级工具&#xf…...

Kafka连接报错?手把手教你解决localhost:9092不可用问题(附真实案例)

Kafka连接报错&#xff1f;手把手教你解决localhost:9092不可用问题&#xff08;附真实案例&#xff09; 当你第一次尝试在本地环境运行Kafka生产者时&#xff0c;看到"Connection to node -1 (localhost/127.0.0.1:9092) could not be established"这样的报错信息&a…...

从CLPM到RI-CLPM:Mplus中交叉滞后模型的进阶指南与选择策略

从CLPM到RI-CLPM&#xff1a;纵向数据分析的模型选择与实战解析 在心理学和行为科学的纵向研究中&#xff0c;交叉滞后模型&#xff08;CLPM&#xff09;长期以来是分析变量间相互影响关系的标准工具。然而&#xff0c;随着研究方法论的进步&#xff0c;研究者们逐渐认识到传统…...

保姆级教程:在WSL上用AWS CLI配置MinIO临时访问凭证(含时区避坑指南)

在WSL中实战MinIO临时凭证&#xff1a;从配置到避坑的全流程指南 如果你正在Windows系统上使用WSL进行开发&#xff0c;并且需要为MinIO对象存储生成临时访问凭证&#xff0c;那么这篇文章将为你提供完整的解决方案。我们将从环境准备开始&#xff0c;逐步深入到凭证生成、策略…...

AsrTools全攻略:革新语音转文字效率的智能解决方案

AsrTools全攻略&#xff1a;革新语音转文字效率的智能解决方案 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate tex…...