LeetCode热题100——双指针
双指针
- 1.移动零
- 2.盛最多水的容器
- 3.三数之和
1.移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
// 题解:使用双指针,其中快指针指向非零元素,慢指针指向首个零元素下标
void moveZeroes(vector<int>& nums) {int slowIdx = 0;for (int fastIdx = 0; fastIdx < nums.size(); ++fastIdx) {if (nums[fastIdx] != 0) {std::swap(nums[slowIdx++], nums[fastIdx]);}}
}
2.盛最多水的容器
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。

// 题解:面积公式 area = std::min(height[i], height[j]) * (j - i)
// 指针从两端向内部移动,当长板向内移动时,短板会变小或者不变,面积一定变小;当短板向内移动时,短板可能会变大,面积也有可能变大,因此只需要不断移动短板便可遍历得到最大面积;
int maxArea(vector<int>& height) {int left_idx = 0;int right_idx = height.size() - 1;int area = 0;while (left_idx < right_idx) {// 需要注意,下标是先使用后自增或者自减area = height[left_idx] < height[right_idx] ?std::max(area, (right_idx - left_idx) * height[left_idx++]) :std::max(area, (right_idx - left_idx) * height[right_idx--]);}return area;
}
3.三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。
// 题解:双指针重复查询
// 排序数组,从前向后逐步遍历数据,按照双指针遍历内部数据,构建三元组形式,需要注意的是如何正确去重元素
vector<vector<int>> threeSum(vector<int>& nums) {if (nums.empty()) {return vector<vector<int>>();}std::sort(nums.begin(), nums.end());vector<vector<int>> results;for (int i = 0; i < nums.size(); ++i) {if (nums[i] > 0) {return results;}// 去除重复数据if (i > 0 && nums[i] == nums[i - 1]) continue;int left = 0;int right = nums.size() - 1;while (left < right) {int target = nums[left] + nums[right] + nums[i];if (target > 0) {right--;} else if (target < 0) {left++;} else {results.push_bakc({nums[i], 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 results;
}
相关文章:
LeetCode热题100——双指针
双指针 1.移动零2.盛最多水的容器3.三数之和 1.移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 // 题解:使用双指针,其中快指针指向非零元素,慢指针指向首个零元素下…...
Ubuntu ARMv8编译Qt源码以及QtCreator
最近需要在NVIDIA小盒子上面跑一个程序,一开始想着在Ubuntu x64下交叉编译一版,后来发现libqxcb.so 这个库在configure时就会一直报错,多方查找怀疑可能是由于硬件不支持在x64环境下编译AMR架构的xcb库。 所以最后在ARM下直接编译Qt源码了&am…...
虚机Centos忘记密码如何重置
1进入开机前的页面,选中第一个,按“e”键,进入编辑模式 2找到ro crashkernel项,将ro替换成 rw initsysroot/bin/sh 3 Ctrlx mount -o remount, rw / chroot /sysroot chroot /sysroot passwd root 输入两次密码 touch /.a…...
OpenGL_Learn02
1. 监听窗口,绑定回调函数 #include <glad/glad.h> #include <GLFW/glfw3.h> #include <iostream>void framebuffer_size_callback(GLFWwindow* window, int width, int height) {glViewport(0, 0, width, height);std::cout << "变了…...
基于STC系列单片机实现外部中断0控制按键调节定时器0产生PWM(脉宽调制)的功能
#define uchar unsigned char//自定义无符号字符型为uchar #define uint unsigned int//自定义无符号整数型为uint sbit PwmOut P1^0;//位定义脉宽调制输出为单片机P1.0脚 uchar PwmTimeCount;//声明脉宽调制时间计数变量 uchar PwmDutyCycle;//声明脉宽调制占空比变量 void Ti…...
vue3中 reactive和ref的区别
在Vue 3中,reactive和ref都是用于响应式数据的API。它们的主要区别在于使用方式和返回值类型。 reactive: reactive函数用于将一个对象转换为响应式对象。它接收一个普通的JavaScript对象,并返回一个被代理的响应式对象。这意味着当响应式对…...
docker的安装部署nginx和mysql
小白自己整理,如有错误请指示! 自我理解:docker就是把应用程序所用的依赖程序,函数库等相关文件打包成镜像文件,类似系统光盘,然后可以在任意电脑上安装使用(方便运维人员部署程序)…...
测试C#调用Aplayer播放视频(1:加载Aplayer控件)
微信公众号“Dotnet跨平台”的文章《开源精品,使用 C# 开发的 KTV 点歌项目》中使用了迅雷开源APlayer播放引擎。最近在学习有哪些能拿来播放视频的组件或控件,于是准备试试,根据文章中的介绍,在迅雷APlayer播放引擎网站中下载了A…...
二叉树的遍历+二叉树的基本操作
文章目录 二叉树的操作一、 二叉树的存储1.二叉树的存储结构 二、 二叉树的基本操作1.前置创建一棵二叉树:1. 定义结点 2.简单的创建二叉树 2.二叉数的遍历1.前序遍历2.中序遍历3.后序遍历4.层序遍历 3.二叉树的操作1.获取树中节点的个数2.获取叶子节点的个数3.获取…...
Go 语言gin框架的web
节省时间与精力,更高效地打造稳定可靠的Web项目:基于Go语言和Gin框架的完善Web项目骨架。无需从零开始,直接利用这个骨架,快速搭建一个功能齐全、性能优异的Web应用。充分发挥Go语言和Gin框架的优势,轻松处理高并发、大…...
Docker底层原理:Cgroup V2的使用
文章目录 检查 cgroup2 文件系统是否已加载检查系统是否已挂载 cgroup2 文件系统创建 cgroup2 层次结构查看 cgroup2 开启的资源控制类型启用 cgroup2 资源控制设置 cgroup2 资源限制加入进程到 cgroup2 检查 cgroup2 文件系统是否已加载 cat /proc/filesystems | grep cgroup…...
历年上午真题笔记(2014年)
解析:A 网络设计的三层模型 : 接入层:Layer 2 Switching,最终用户被许可接入网络的点,用户通过接入层可以访问网络设备。 汇聚层:Layer2/3 Switching,访问层设备的汇聚点,负责汇接配线单元,利用二、三层技术实现工作组分段及网络故障的隔离,以免对核心层网络设备造…...
数据库软考知识
分布式数据库透明性 封锁 加上共享锁之后只能加共享锁,加上排他锁之后,啥锁都不能加。 分布式数据库特性 伪传递定理 SQL函数定义,有点冷 来了奥,更冷 存储过程 很重要,下午第二大题也是数据库...
学习笔记|配对样本均数T检验|SPSS常用的快捷键|规范表达|《小白爱上SPSS》课程:SPSS第六讲 | 配对样本均数T检验
目录 学习目的软件版本原始文档配对样本均数T检验一、实战案例二、案例解析三、统计策略四、SPSS操作1、正态性检验2、配对样本T检验 五、结果解读六、规范报告1、规范表格2、规范文字 划重点Tips:SPSS常用的快捷键 学习目的 SPSS第六讲 | 配对样本均数T检验 软件版本 IBM S…...
python内置模块smtplib、email 发送电子邮件
一、简介 smtplib 是 Python 的标准库之一,用于发送电子邮件。它提供了一个简单的接口来连接到 SMTP(Simple Mail Transfer Protocol)服务器,并通过该服务器发送电子邮件。 email 是 Python 的标准库之一,用于处理电子…...
Qt使用QWebEngineView一些记录
1.关闭软件警告: Release of profile requested but WebEnginePage still not deleted. Expect troubles! 原因,系统退出关闭view,没有释放page。 解决办法:手动释放page 顺便把view也释放了。 Widget::~Widget() {updateIni…...
【2023.10.30练习】C语言-判断等式成立
计算机能力挑战初赛2020.20题 题目描述: 输入正整数A、B、C(0<A,B,C<10000),若用、-、*、/、%之一组成等式(即ABC,是上述运算符之一,),则输出“YES”,否则输出“NO”; 输入: 第一行输入…...
Wpf 使用 Prism 实战开发Day03
一.实现左侧菜单绑定 效果图: 1.首先需要在项目中创建 mvvm 的架构模式 创建 Models ,放置实体类。 实体类需要继承自Prism 框架的 BindableBase,目的是让实体类支持数据的动态变更! 例如: 系统导航菜单实体类 / <summary>/// 系统导航菜单实体类…...
JavaEE-cookie和session
本部分内容包括 cookie基本概念,sendcookies和getcookies代码; session基本概念,session实现登陆界面; 上述过程中涉及的代码如下: 1 import javax.servlet.ServletException; import javax.servlet.annotation.WebSe…...
Java设计模式之命令模式
目录 定义 结构 案例 优点 缺点 使用场景 JDK源码解析 Thread中start与run方法的区别 定义 将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行存储、传递、调用、增…...
移动端优化gh_mirrors/ti/til:PWA渐进式Web应用开发的终极指南
移动端优化gh_mirrors/ti/til:PWA渐进式Web应用开发的终极指南 【免费下载链接】til :memo: Today I Learned 项目地址: https://gitcode.com/gh_mirrors/ti/til GitHub 加速计划(ti/til)是一个记录日常学习的开源项目,通过…...
Agent:它不是更聪明的大模型,而是让大模型持续推进任务的“大脑+身体”系统!
本文深入探讨了Agent与大模型的关系,强调Agent并非模型本身,而是一套围绕模型组织的运行机制。文章详细解析了Agent的核心机制,包括状态管理、控制循环和工具调用,并阐述了System Prompt、AGENTS.md、Skill和Tool等概念在Agent系统…...
不止于导航:用AI Habitat的语义分割数据,教你构建自己的室内物体识别与场景理解Pipeline
不止于导航:用AI Habitat的语义分割数据构建室内物体识别与场景理解Pipeline 在计算机视觉与机器人领域,室内场景理解一直是极具挑战性的研究方向。传统方法依赖于昂贵的传感器设备和人工标注数据,而仿真平台的出现为这一领域带来了革命性变…...
Fooocus终极指南:零门槛AI图像生成神器,5分钟从安装到创作
Fooocus终极指南:零门槛AI图像生成神器,5分钟从安装到创作 【免费下载链接】Fooocus Focus on prompting and generating 项目地址: https://gitcode.com/GitHub_Trending/fo/Fooocus 在AI图像生成领域,复杂的技术参数和繁琐的调整过程…...
SAR ADC性能优化:电压基准设计与THD改善方案
1. 电压基准对SAR ADC性能的影响机制在精密数据采集系统设计中,工程师们常常花费大量精力选择高性能的模数转换器(ADC)和优化输入驱动电路,却容易忽视一个关键因素——电压基准的质量及其驱动能力。对于逐次逼近型(SAR)ADC而言,基准电压的稳定…...
SystemVerilog VPI动态数据处理机制与验证实践
1. SystemVerilog VPI动态数据处理机制深度解析在当今复杂的SoC验证环境中,SystemVerilog的动态数据类型已成为验证基础设施的核心组成部分。作为连接SystemVerilog与外部C/C程序的关键桥梁,VPI(Verilog Procedural Interface)的动态数据处理能力直接决定…...
AI工具导航与实战指南:从分类体系到选型策略
1. 项目概述:AI-Infinity,一个前沿AI工具的探索者指南如果你和我一样,对AI领域层出不穷的新工具感到既兴奋又头疼,那么这个项目绝对值得你花时间深入了解。AI-Infinity,这个由开发者meetpateltech维护的GitHub仓库&…...
YOLOv5锚框(anchor)自适应计算与实战调优指南
1. 为什么需要自定义YOLOv5锚框参数 第一次用YOLOv5跑自己的数据集时,我发现模型死活训不出好效果。明明用的是官方预训练权重,标注数据也检查过没问题,但AP值就是上不去。后来把预测结果可视化出来才发现问题——那些长条形物体(…...
[已解决]Vscode插件Keil Assistant连接Keil后出现的头文件路径无法寻找问题
问题详情 按照网络上的教程按照并且配置好vscode的Keil Assistant插件后,成功打开了Keil工程并且编译成功。但是头文件无法跳转,以及出现红色波浪线报错。 解决方法 在.vscode\c_cpp_properties.json中添加以下两行路径: "includePath&q…...
GDScript Mod Loader:为Godot游戏打造专业模组生态的完整指南
1. 项目概述:为你的Godot游戏注入社区活力如果你是一名使用Godot引擎的独立游戏开发者,或者是一位热衷于为喜爱的游戏创造新内容的玩家,那么“模组”这个概念你一定不陌生。模组,或者说Mod,是游戏社区生命力的重要源泉…...
