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

【算法刷题指南】双指针

在这里插入图片描述

🌈个人主页: 南桥几晴秋
🌈C++专栏: 南桥谈C++
🌈C语言专栏: C语言学习系列
🌈Linux学习专栏: 南桥谈Linux
🌈数据结构学习专栏: 数据结构杂谈
🌈数据库学习专栏: 南桥谈MySQL
🌈Qt学习专栏: 南桥谈Qt
🌈菜鸡代码练习: 练习随想记录
🌈git学习: 南桥谈Git

🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈
本科在读菜鸡一枚,指出问题及时改正

283.移动零

283.移动零

class Solution {
public:void moveZeroes(vector<int>& nums) {int n = nums.size();int cur = 0;int dest = 0; // 已经处理区间内非0元素的位置// [0,dest](全是非0元素)    [dest+1,cur-1](全是0元素)   [cur,n-1](待处理元素)while (cur < n) {if (nums[cur]) {swap(nums[dest], nums[cur]);dest++;cur++;} else {cur++;}}}
};

1089.复写零

1089.复写零

class Solution {
public:void duplicateZeros(vector<int>& arr) {int n = arr.size();int dist = -1, cur = 0;// 先判断cur的位置while (cur < n) {if (arr[cur]) {dist++;} else {dist += 2;}if (dist >= n - 1)break;cur++;}if (dist == n) {arr[n - 1] = 0;cur--;dist -= 2;}while (cur >= 0) {if (arr[cur]) {arr[dist] = arr[cur];cur--;dist--;} else {arr[dist--] = 0;arr[dist--] = 0;cur--;}}}
};

202.快乐数

202.快乐数

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

11.盛最多水的容器

11.盛最多水的容器

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

611.有效三角形的个数

611.有效三角形的个数

判断三角形方法:a+b>c&&a+c>b&&b+c>a
但是这种判断方法需要判断三次
更加优化的方法:三个数是排好序的,a<b<c,只需要判断a+b>c成立与否

class Solution {
public:int triangleNumber(vector<int>& nums) {int n = nums.size();sort(nums.begin(), nums.end());int ans = 0;for (int i = n - 1; i >= 2; i--) {int left = 0, right = i - 1;while (left != right) {if (nums[left] + nums[right] > nums[i]) {ans += right - left;right--;} else {left++;}}}return ans;}
};

15.三数之和

15.三数之和

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

18.四数之和

18.四数之和

class Solution {typedef long long LL;public:vector<vector<int>> fourSum(vector<int>& nums, int target) {int n = nums.size();sort(nums.begin(), nums.end());vector<vector<int>> ans;for (int i = 0; i < n; i++) {if (i > 0 && nums[i] == nums[i - 1])continue;for (int j = i + 1; j < n; j++) {if (j > i + 1 && nums[j] == nums[j - 1])continue;int left = j + 1, right = n - 1;LL t = (LL)target - nums[i] - nums[j];while (left < right) {if (nums[left] + nums[right] < t)left++;else if (nums[left] + nums[right] > t)right--;else {ans.push_back({nums[i], nums[j], nums[left], nums[right]});while (left < right && nums[left] == nums[left + 1])left++;while (left < right && nums[right] == nums[right - 1])right--;left++;right--;}}}}return ans;}
};

在这里插入图片描述

相关文章:

【算法刷题指南】双指针

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…...

HTML,CSS,JavaScript三件套

前言 1.HTML 就是用来写网页的 就是超文本标记语言 1.1快速入门 标签是根标签&#xff0c;就是开始的地方 head就是头&#xff0c;加载一些资源信息&#xff0c;和展示title标题的地方&#xff0c;比如html快速入门那几个字就是title标题标签 body是身体&#xff0c;就是正…...

react 总结+复习+应用加深

文章目录 一、React生命周期1. 挂载阶段&#xff08;Mounting&#xff09;补充2. 更新阶段&#xff08;Updating&#xff09;补充 static getDerivedStateFromProps 更新阶段应用补充 getSnapshotBeforeUpdate3. 卸载阶段&#xff08;Unmounting&#xff09; 二、React组件间的…...

关于 API

关于 API $set 问法&#xff1a;有没有遇到过数据更新了但视图没有更新的情况&#xff1f; <template><div>{{arr}}<button click"btn"></button></div> </template><script> export default {name:"Home"da…...

第15次CCF CSP真题解

1、小明上学 题目链接&#xff1a;https://sim.csp.thusaac.com/contest/15/problem/0 本题是模拟红绿灯计时的题&#xff0c;根据红绿灯转换规则可知&#xff0c;红灯后面通常是绿灯&#xff0c;绿灯后面是黄灯&#xff0c;黄灯过后又是红灯。根据题意&#xff0c;当k 0时&…...

STM32硬件平台

STM32 系列是 STMicroelectronics 设计的高度灵活、广泛应用的微控制器&#xff08;MCU&#xff09;系列&#xff0c;支持从低功耗应用到高性能处理的需求&#xff0c;适用于工业、汽车、消费电子和物联网等广泛领域。STM32 系列具有广泛的硬件种类和丰富的功能&#xff0c;以下…...

一文讲明白大模型分布式逻辑(从GPU通信原语到Megatron、Deepspeed)

1. 背景介绍 如果你拿到了两台8卡A100的机器&#xff08;做梦&#xff09;&#xff0c;你的导师让你学习部署并且训练不同尺寸的大模型&#xff0c;并且写一个说明文档。你意识到&#xff0c;你最需要学习的就是关于分布式训练的知识&#xff0c;因为你可是第一次接触这么多卡…...

【人工智能-初级】第6章 决策树和随机森林:浅显易懂的介绍及Python实践

文章目录 一、决策树简介二、决策树的构建原理2.1 决策树的优缺点优点缺点 三、随机森林简介3.1 随机森林的构建过程3.2 随机森林的优缺点优点缺点 四、Python实现决策树和随机森林4.1 导入必要的库4.2 加载数据集并进行预处理4.3 创建决策树模型并进行训练4.4 可视化决策树4.5…...

时间序列预测(九)——门控循环单元网络(GRU)

目录 一、GRU结构 二、GRU核心思想 1、更新门&#xff08;Update Gate&#xff09;&#xff1a;决定了当前时刻隐藏状态中旧状态和新候选状态的混合比例。 2、重置门&#xff08;Reset Gate&#xff09;&#xff1a;用于控制前一时刻隐藏状态对当前候选隐藏状态的影响程度。…...

李东生牵手通力股份IPO注册卡关,三年近10亿“清仓式分红”引关注

《港湾商业观察》施子夫 9月27日&#xff0c;通力科技股份有限公司&#xff08;以下简称&#xff0c;通力股份&#xff09;再度提交了注册申请&#xff0c;实际上早在去年11月6日公司已经提交过注册&#xff0c;看起来公司注册环节面临卡关。公开信息显示&#xff0c;通力股份…...

Android13、14特殊权限-应用安装权限适配

Android13、14特殊权限-应用安装权限适配 文章目录 Android13、14特殊权限-应用安装权限适配一、前言二、权限适配三、其他1、特殊权限-应用安装权限适配小结2、dumpsys package查看获取到了应用安装权限3、Android权限系统&#xff1a;应用操作管理类AppOpsManager&#xff08…...

DMVPN协议

DMVPN&#xff08;Dynamic Multipoint VPN&#xff09;动态多点VPN 对于分公司和分总公司内网实现通信环境下&#xff0c;分公司是很多的。我们不可能每个分公司和总公司都挨个建立ipsec隧道 &#xff0c;而且如果是分公司和分公司建立隧道&#xff0c;就会很麻烦。此时我们需…...

leetcode动态规划(十八)-零钱兑换II

题目 322.零钱兑换II 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1 。 你可以认为每种硬…...

2024 CSP-J 题解

2024 CSP-J题解 扑克牌 ​ 题目给出了一整套牌的定义&#xff0c;但是纯粹在扯淡&#xff0c;完全没有必要去判断给出的牌的花色和点数&#xff0c;我们用一个循环来依次读入每一张牌&#xff0c;如果这个牌在之前出现过&#xff0c;我们就让答案减一。这里建议用map、unorde…...

GPU 服务器厂家:中国加速计算服务器市场的前瞻洞察

科技的飞速发展&#xff0c;让 GPU 服务器在加速计算服务器领域的地位愈发凸显。中国加速计算服务器市场正展现出蓬勃的生机&#xff0c;而 GPU 服务器厂家则是这场科技盛宴中的关键角色。 从市场预测的趋势来看&#xff0c;2023 年起&#xff0c;中国加速计算服务器市场便已展…...

Hadoop集群修改yarn队列

1.修改默认的default队列参数 注意&#xff1a; yarn.scheduler.capacity.root.队列名.capacity总和不能超过100 <property><name>yarn.scheduler.capacity.root.queues</name><value>default,hive,spark,flink</value><description>The…...

【GPIO】2.ADC配置错误,还是能得到电压数据

配置ADC功能时&#xff0c;GPIO引脚弄错了&#xff0c;P1写成P2&#xff0c;但还是配置成功&#xff0c;能得到电压数据。 首先一步步排查&#xff1a; 既然引脚弄错了&#xff0c;那引脚改为正确的引脚&#xff0c;能得到数据通过第一步判断&#xff0c;GPIO配置似乎是不起作…...

css-元素居中方式

<section class"wrapper"><div class"content">Content goes here</div> </section>1. 使用 Flexbox Flexbox 是一种现代的布局方法&#xff0c;可以轻松实现居中。 .wrapper {display: flex; /* 使用 Flexbox …...

redis内存打满了怎么办?

1、设置maxmemory的大小 我们需要给 Redis设置maxmemory的大小&#xff0c;如果不设置的话&#xff0c;它会受限于系统的物理内存和系统对内存的管理机制。 2、设置内存的淘汰策略 内存的淘汰策略分为 8 种&#xff0c;从淘汰范围来说分为从所有的key中淘汰和从设置过期时间…...

决策算法的技术分析

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言(1)第一层级:分层状态机、分层决策树的想法(三个臭皮匠胜过一个诸葛亮)基于场景的固定规则化的分层决策核心思想(2)第二层级:数据管理的方…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...