【算法刷题指南】双指针

在这里插入图片描述

🌈个人主页: 南桥几晴秋
🌈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;}
};

在这里插入图片描述

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

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

相关文章

前端零基础入门到上班:【Day1】什么是前端?

本来打算开付费专栏 但是想起那句话 赠人玫瑰手留余香 引言1. 什么是前端&#xff1f;1.1 前端的定义1.2 前端的三大核心技术1.3 前端框架和工具 2. 什么是后端&#xff1f;2.1 后端的定义2.2 后端的组成要素2.3 后端框架和工具 3. 前后端的区别4. 什么是前后端分离&#xff1f…

院士领衔,瑞德磁电誓将中国红染遍磁电产业

【哔哥哔特导读】今天我们从广州来到淮北&#xff0c;参观一家由院士领衔创立的金属磁粉芯企业&#xff0c;看他们如何将中国红染遍磁电产业&#xff0c;一步步实现金属磁粉芯的国产替代。 想要成为一个领域的头部企业&#xff0c;技术实力与产能规模缺一不可&#xff0c;而瑞…

[翱捷]让SDK跑起来了

一&#xff0c;环境安排及验证 参照文档 <<ASR编译环境及编译步骤--3601.docx>> <<Windows环境搭建.docx>> <<ChildWatchSWUG_1221.doc>> 主要工具包括 ARM DS-5 V5.26.2 (64-bit)ActivePerl 5.28.1 Build 2801 (64-bit)msys2-x86_6…

摊牌了,创业失败了

“以为这个网红不会塌房&#xff0c;结果一觉醒来&#xff0c;天塌了……” ——某电商供应商 “这不是禁不住网上的各种诱惑吗&#xff0c;9月30日纵身入局&#xff0c;节假日几天不能买入&#xff0c;8号上班第一天我还看着钱数开心呢。结果今天……” ——一位投资失利&…

Python日志系统详解:Logging模块最佳实践

Python日志系统详解&#xff1a;Logging模块最佳实践 在开发Python应用程序时&#xff0c;日志记录是排查问题、监控系统状态、优化性能的重要手段。Python标准库中提供了强大的logging模块&#xff0c;使开发者可以轻松实现灵活的日志系统。本文将详细介绍Python的logging模块…

Java实现邮箱发送邮件添加定时任务(二)

上篇文章我们谈到邮件的发送&#xff0c;但是可以发现使用非常局限&#xff0c;这里我做了一个简单的修改&#xff0c;添加了定时发送功能&#xff0c;可以帮助我们处理很多繁琐的事 这里我写了一个简单的案例 1. 先在pom文件里面添加依赖 2.配置yml文件 3.写一个定时任务类…

python项目实战——多协程下载美女图片

协程 文章目录 协程协程的优劣势什么是IO密集型任务特点示例与 CPU 密集型任务的对比处理 I/O 密集型任务的方式总结 创建并使用协程asyncio模块 创建协程函数运行协程函数asyncio.run(main())aiohttp模块调用aiohttp模块步骤 aiofiles————协程异步函数遇到的问题一 await …

AI最新动态概览-2024年10月28日

1. 字节跳动加速欧洲布局&#xff0c;拟建AI研发中心 近日&#xff0c;有消息称字节跳动正积极筹备在欧洲设立AI研发中心&#xff0c;此举标志着该公司在全球技术版图上的又一重要扩张。随着人工智能技术的飞速发展&#xff0c;字节跳动正通过招兵买马&#xff0c;进一步巩固其…

Linux 进程优先级 进程切换

目录 优先级 概念 为什么优先级要限制在一定范围内 进程切换 方式 EIP寄存器(程序计数器) 进程在运行时会使用寄存器来保存临时数据 进程的上下文是什么&#xff1f; 进程的上下文保存到哪&#xff1f; 内核栈或专门的上下文结构也在内核空间&#xff1f;那为什么不直…

java 提示 避免用Apache Beanutils进行属性的copy。

避免用Apache Beanutils进行属性的copy。 Inspection info: 避免用Apache Beanutils进行属性的copy。 说明&#xff1a;Apache BeanUtils性能较差&#xff0c;可以使用其他方案比如Spring BeanUtils, Cglib BeanCopier。 TestObject a new TestObject(); TestObject b new Te…

2024 最新 frida技术栈 第一部分

目录 1.下载 2. 安装 2.1. 命令 3.基本使用 3.1 列出运行的APP 3.2 列出所有APP 3.3 杀死进程 4. frida hook 方法 4.1 frida客户端命令行的参数 4.2. Frida两种操作模式 4.3. Frida操作APP的两种方式 4.3.1. attach模式 4.3.2. spawn模式 4.3.3 转发端口启…

RabbitMQ的Overview Totals是空

一、问题描述 RabbitMQ 版本&#xff1a;4.0.2&#xff0c;Erlang 版本&#xff1a;26.2.5.4。 RabbitMQ 页面管理(rabbitmq_management)的 Overview > Totals 是空&#xff1a; 二、原因分析 RabbitMQ 的配置&#xff1a; management_agent.disable_metrics_collector…

Hive的数据存储格式

目录 一、前言 二、存储格式 2.1、文本格式&#xff08;TextFile&#xff09; 2.1.1、定义与特点 2.1.2、存储与压缩 2. 1.3、使用场景 2.2、行列式文件&#xff08;ORCFile&#xff09; 2.2.1、ORC的结构 2.2.2、ORC的数据类型 2.2.3、ORC的压缩格式 2.2.3、ORC存储…

LVGL移植教程(超详细)——基于GD32F303X系列MCU

版本&#xff1a;LVGL Kernel V8.3.0&#xff0c;运行压力测试Demo Stress首先放一张最终Stress Demo 运行图&#xff1a; 一、准备 1. GD32 Keil工程 准备任意一个屏幕可以正常显示的GD32工程&#xff1a; 2. LVGL源码 最新版现在已经是V9.2了&#xff0c;这里我选择了…

XQT_UI 组件|03 |加载组件 XQtLoading

XQtLoading 使用文档 简介 XQtLoading 是一个自定义的加载动画组件&#xff0c;旨在为用户提供可配置的旋转花瓣动画效果。它可以在应用程序中用于指示加载状态&#xff0c;提升用户体验。 特征 可配置性&#xff1a;用户可以根据需求调整旋转周期、缩放周期、最大/最小缩放…

Bi-LSTM-CRF实现中文命名实体识别工具(TensorFlow)

项目源码获取方式见文章末尾&#xff01; 回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 **《------往期经典推荐------》**项目名称 1.【MobileNetV2实现实时口罩检测tensorflow】 2.【卫星图像道路检测DeepLabV3P…

关于嵌入式学习的一些短浅经验

一、写在前面 感谢在 10.23&#xff0c;各位大佬对我进行的模拟面试&#xff0c;我也发现了我对知识的不熟练的部分&#xff0c;比如 IPC 方法和线程同步方法的知识。模拟面试第四期-已经拿到大厂 OFFER 的研究生大佬-LINUX 卷到飞起_哔哩哔哩_bilibili 然后&#xff0c;沈阳…

uniapp+uniCloud前端独立开发全栈项目Vue3版本学习路线,轻松开发H5、微信小程序、APP

概述 嗨&#xff0c;大家好&#xff0c;我是爱搞知识的咸虾米&#xff0c;这个学习路线是uniappuniCloud生态开发微信小程序、H5、APP等实战项目&#xff0c;从零基础开始到各种类型的项目案例&#xff0c;使用比较新的vue3语法糖版本&#xff0c;通过前端的技术可以轻松开发上…

微信小程序——消息订阅

首先用到的就是wx.requestSubscribeMessage接口。 注意&#xff1a;用户发生点击行为或者发起支付回调后&#xff0c;才可以调起订阅消息界面 requestSubscribeMessage() {uni.requestSubscribeMessage({tmplIds: [],//需要订阅的消息模板的id的集合&#xff0c;一次调用最多可…

Docker 常用命令全解析:提升对雷池社区版的使用经验

Docker 常用命令解析 Docker 是一个开源的容器化平台&#xff0c;允许开发者将应用及其依赖打包到一个可移植的容器中。以下是一些常用的 Docker 命令及其解析&#xff0c;帮助您更好地使用 Docker。 1. Docker 基础命令 查看 Docker 版本 docker --version查看 Docker 运行…