算法题目总结-双指针
文章目录
- 1.滑动窗口类型
- 1.长度最小的子数组
- 1.答案
- 2.思路
- 2.无重复字符的最长子串
- 1.答案
- 2.思路
- 2.双指针类型
- 1.盛最多水的容器
- 1.答案
- 2.思路
- 2.三数之和
- 1.答案
- 2.思路
1.滑动窗口类型
1.长度最小的子数组
1.答案
package com.sunxiansheng.arithmetic.day10;/*** Description: 209. 长度最小的子数组** @Author sun* @Create 2025/1/15 10:53* @Version 1.0*/
public class t209 {public static int minSubArrayLen(int target, int[] nums) {// 窗口定义:窗口内的元素要小于targetint left = 0;int sum = 0;// 记录结果int res = Integer.MAX_VALUE;for (int right = 0; right < nums.length; right++) {// 求和sum += nums[right];// 当窗口不满足要求时,记录结果,移动左指针while (sum >= target) {res = Math.min(res, right - left + 1);sum -= nums[left];left++;}}return res == Integer.MAX_VALUE ? 0 : res;}
}
2.思路
窗口定义:窗口内的元素要小于target,当窗口不满足要求时,记录结果,移动左指针
2.无重复字符的最长子串
1.答案
package com.sunxiansheng.arithmetic.day10;import java.util.HashSet;
import java.util.Set;/*** Description: 3. 无重复字符的最长子串** @Author sun* @Create 2025/1/15 11:01* @Version 1.0*/
public class t3 {public static int lengthOfLongestSubstring(String s) {// 窗口定义:窗口内的元素不能重复int left = 0;// 窗口Set<Character> set = new HashSet<>();// 结果int res = 0;for (int right = 0; right < s.length(); right++) {// 判断是否重复boolean flag = set.contains(s.charAt(right));// 加入窗口set.add(s.charAt(right));// 计算结果res = Math.max(res, set.size());// 如果重复了if (flag) {// 只要左指针指向的元素不等于右指针指向的元素,就一直移动左指针while (s.charAt(left) != s.charAt(right)) {set.remove(s.charAt(left));left++;}// 到这里说明左指针指向了重复元素,再移动一次left ++;}}return res;}
}
2.思路
窗口定义:窗口内的元素不能重复,先判断一下是否重复了,然后加入窗口,计算结果,如果真的重复了,就一直滑动窗口,直到将重复的元素移除
2.双指针类型
1.盛最多水的容器
1.答案
package com.sunxiansheng.arithmetic.day11;/*** Description: 11. 盛最多水的容器** @Author sun* @Create 2025/1/16 09:57* @Version 1.0*/
public class t11 {public static int maxArea(int[] height) {int max = 0;// 双指针int left = 0, right = height.length - 1;while (left < right) {// 求水量max = Math.max(max, Math.min(height[left], height[right]) * (right - left));// 如果左边小于右边,左指针移动if (height[left] < height[right]) {left++;} else {// 其余情况,右指针向左移动right--;}}return max;}
}
2.思路
就是用两个指针指向两边,先求水量和最大值,然后哪边指针的height低就移动哪边的指针
2.三数之和
1.答案
package com.sunxiansheng.arithmetic.day11;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;/*** Description: 15. 三数之和** @Author sun* @Create 2025/1/16 10:02* @Version 1.0*/
public class t15 {public static List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> res = new ArrayList<>();// 先排序Arrays.sort(nums);// 一层遍历 + 双指针for (int i = 0; i < nums.length - 2; i++) {// 1.当前元素跟前一个元素相同时不考虑if (i > 0 && nums[i] == nums[i - 1]) {continue;}int left = i + 1;int right = nums.length - 1;while (left < right) {// 求和int sum = nums[i] + nums[left] + nums[right];if (sum == 0) {res.add(Arrays.asList(nums[i], nums[left], nums[right]));// 2.左右指针指向的下一个元素跟当前元素相同也不考虑while (left < right && nums[left] == nums[left + 1]) {left++;}while (left < right && nums[right] == nums[right - 1]) {right--;}left++;right--;} else if (sum < 0) {left++;} else {right--;}}}return res;}
}
2.思路
一次遍历加上双指针,然后有两个去重点,一个是遍历遇到相同元素时的去重,另一个是左右指针遇到相同元素的去重】
相关文章:
算法题目总结-双指针
文章目录 1.滑动窗口类型1.长度最小的子数组1.答案2.思路 2.无重复字符的最长子串1.答案2.思路 2.双指针类型1.盛最多水的容器1.答案2.思路 2.三数之和1.答案2.思路 1.滑动窗口类型 1.长度最小的子数组 1.答案 package com.sunxiansheng.arithmetic.day10;/*** Description:…...
人形机器人将制造iPhone!
前言 优必选机器人和富士康通过一项突破性的合作伙伴关系,正在将先进的人形机器人(如Walker S1及其升级版Walker S2)整合到制造流程中,以改变iPhone的生产方式。这一合作旨在通过提升机器人能力、优化工作流程以及实现更智能的自动…...
redis 各个模式的安装
一、Redis单机安装 1、安装gcc依赖 Redis是C语言编写的,编译需要GCC。 Redis6.x.x版本支持了多线程,需要gcc的版本大于4.9,但是CentOS7的默认版本是4.8.5。 升级gcc版本: yum -y install centos-release-scl yum -y install d…...
《王者荣耀》皮肤爬虫源码
1.爬取网页 https://pvp.qq.com/web201605/herolist.shtml 2.python代码 import requests from bs4 import BeautifulSoup import os import threading from queue import Queuedef mul(x):if not os.path.exists(x):os.mkdir(x)print("目录创建成功")else:pass h…...
学习ASP.NET Core的身份认证(基于JwtBearer的身份认证8)
为进一步测试通过请求头传递token进行身份验证,在main.htm中增加layui的数据表格组件,并调用后台服务分页显示数据,后台分页查询数据接口如下所示(测试时,直接将数据写死到代码中,没有查询数据库࿰…...
PyTorch使用教程(6)一文讲清楚torch.nn和torch.nn.functional的区别
torch.nn 和 torch.nn.functional 在 PyTorch 中都是用于构建神经网络的重要组件,但它们在设计理念、使用方式和功能上存在一些显著的区别。以下是关于这两个模块的详细区别: 1. 继承方式与结构 torch.nn torch.nn 中的模块大多数是通过继承 torch.nn…...
React的应用级框架推荐——Next、Modern、Blitz等,快速搭建React项目
在 React 企业级应用开发中,Next.js、Modern.js 和 Blitz 是三个常见的框架,它们提供了不同的特性和功能,旨在简化开发流程并提高应用的性能和扩展性。以下是它们的详解与比较: Next、Modern、Blitz 1. Next.js Next.js 是由 Ve…...
基于GRU实现股价多变量时间序列预测(PyTorch版)
前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对抗网络、门控循环单元、长短期记…...
Java创建对象有几种方式?
大家好,我是锋哥。今天分享关于【Java创建对象有几种方式?】面试题。希望对大家有帮助; Java创建对象有几种方式? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Java中,创建对象主要有以下几种方式&…...
Vue3初学之Element Plus Dialog对话框,Message组件,MessageBox组件
Dialog的使用: 控制弹窗的显示和隐藏 <template><div><el-button click"dialogVisible true">打开弹窗</el-button><el-dialogv-model"dialogVisible"title"提示"width"30%":before-close&qu…...
基于Python机器学习的双色球数据分析与预测
python统计分析2003-2024年所有的中奖记录,通过人工智能机器学习预测双色球,个人意见,仅供参考. 声明:双色球具有随机性,任何工具无法预测。本文章仅作为技术交流,提供学习参考。本文所涉及的代码均为python之机器学习的代码。双色球为公益事…...
微软Win10 RP 19045.5435(KB5050081)预览版发布!
系统之家1月20日最新报道,微软面向Release Preview频道的Windows Insider项目成员,发布了适用于Windows10 22H2版本的KB5050081更新,更新后系统版本号将升至19045.5435。本次更新增加了对GB18030-2022标准的支持,同时新版日历将为…...
使用 Parcel 和 NPM 脚本进行打包
使用 Parcel 和 NPM 脚本进行打包 Parcel Parcel 是一个零配置的网页应用程序打包工具,主要用于快速构建现代 JavaScript 应用。 我们可以使用npm直接安装它 npm install --save-dev parcel //这将把 Parcel 添加到 devDependencies 中,表明它是一个…...
HTML<center>标签
HTML5不支持。 <center>标签在HTML4中用于使文本居中对齐。 用什么来代替呢? 例子 居中对齐文本(使用 CSS): <html> <head> <style> h1 {text-align: center;} p {text-align: center;} div {text-a…...
LatentSync本地部署教程:基于音频精准生成唇形高度同步视频
LatentSync 是字节跳动联合北京交通大学推出的一个端到端的唇形同步框架,以下是对其的详细介绍: 一、技术基础 LatentSync 基于音频条件的潜在扩散模型,无需任何中间的 3D 表示或 2D 特征点。它利用了 Stable Diffusion 的强大生成能力&…...
ES使用笔记,聚合分组后再分页,探索性能优化问题
之前分享过一篇文档,也是关于聚合分组后再分页的具体实现,当时只想着怎么实现,没有去主要探索ES性能优化的问题, 这篇我会换一种方式,重新实现这个聚合分组后再分页的操作,并且指出能优化性能点,可能我们再使用的时候,并没有注意过的点,希望对你有帮助!大佬的话,请忽略! 上源码…...
VUE3 vite下的axios跨域
在使用 Vite 开发时,如果你的前端项目需要请求后端 API,且后端和前端不在同一个域上,可能会遇到跨域问题。跨域是指浏览器出于安全考虑,阻止了前端网页向不同源(域名、协议、端口)发送请求。 解决跨域问题…...
Mac下安装ADB环境的三种方式
参考网址: Mac下安装ADB环境的三种方式-百度开发者中心 ADB,即Android Debug Bridge,是Android开发过程中不可或缺的工具。通过ADB,开发者可以在计算机上管理设备或模拟器上的应用,提供了丰富的调试功能。然而&#…...
在Vue中,<img> 标签的 src 值
1. 直接指定 src 的值(适用于网络图片) 如果你使用的是网络图片(即图片的URL是完整的HTTP或HTTPS链接),可以直接指定 src 的值: vue 复制 <template><div><img src"https://exampl…...
Kotlin基础知识学习(三)
函数使用 基本用法 函数声明变化 如果函数是公开的,则public关键字可以省略。用fun关键字表示函数的定义。如果函数没有返回值可以不用声明。如果函数表示重载,直接在fun同一行用override修饰。函数参数格式是变量名:变量类型。函数参数允…...
MindSpore 环境配置完全指南呕
前面我们对 Kafka 的整体架构和一些关键的概念有了一个基本的认知,本文主要介绍 Kafka 的一些配置参数。掌握这些参数的作用对我们的运维和调优工作还是非常有帮助的。 写在前面 Kafka 作为一个成熟的事件流平台,有非常多的配置参数。详细的参数列表可以…...
基于贝叶斯优化的稀疏高斯过程回归(BO-SGPR)多输入单输出回归模型【MATLAB】
基于贝叶斯优化的稀疏高斯过程回归(BO-SGPR)多输入单输出回归模型【MATLAB】 在处理复杂的非线性回归、小样本学习以及带有不确定性量化的预测任务时,高斯过程回归(Gaussian Process Regression, GPR) 因其强大的理论基…...
Tun模式浏览器无法使用网络
环境Win11,v2软件表现情况打开Tun模式后发现无法连接网络,v2的dns配置保持默认。本文方法适用于打开Tun模式时,虚拟网卡可以正常创建,但是仍然无法联网的情况。在开始里搜索查看网络连接,这里是可以正常创建的。解决方…...
给硬件小白的保姆级教程:手把手搞定RK3399 Linux-SDK的MIPI屏幕驱动配置
从零点亮RK3399的MIPI屏幕:一份没有硬件基础也能上手的实战指南 当你第一次拿到RK3399开发板和那块神秘的MIPI屏幕时,可能会被各种专业术语吓到——DTS配置、初始化序列、GPIO引脚、背光控制...这些概念对于软件背景的开发者来说,简直就像天书…...
从经验到智能:TVA时代企业质检员的角色转型
随着工业4.0的推进,汽车零部件生产逐渐向智能化、自动化转型,智能体视觉检测系统(TVA)的广泛应用,彻底改变了传统焊接点检测的模式,也对质检员的角色与能力提出了新的要求。传统模式下,质检员的…...
SetFit模型性能基准测试:与主流小样本方法的全面对比
SetFit模型性能基准测试:与主流小样本方法的全面对比 【免费下载链接】setfit Efficient few-shot learning with Sentence Transformers 项目地址: https://gitcode.com/gh_mirrors/se/setfit SetFit作为一种高效的小样本学习方法,基于Sentence …...
如何轻松绕过Windows 11安装限制:终极MediaCreationTool.bat使用指南
如何轻松绕过Windows 11安装限制:终极MediaCreationTool.bat使用指南 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool…...
nlp_structbert_sentence-similarity_chinese-large部署教程:阿里云PAI-EAS一键部署全流程
nlp_structbert_sentence-similarity_chinese-large部署教程:阿里云PAI-EAS一键部署全流程 1. 工具简介 nlp_structbert_sentence-similarity_chinese-large是一个专门用于中文句子语义相似度计算的强大工具。它基于阿里达摩院开源的StructBERT大规模预训练模型&a…...
基于Wi-Fi无损传输与I2S直驱:ESP32+PCM5102高保真音频播放方案详解
1. 为什么需要Wi-Fi无损音频方案 如果你是个对音质有追求的发烧友,肯定对蓝牙音频的局限性深有体会。常见的AAC、SBC编码会带来明显的音质损失,即便是高码率的LDAC和aptX HD,本质上还是有损压缩。更让人头疼的是,在Windows系统上播…...
Phi-3-mini-4k-instruct-gguf在LSTM时间序列预测项目中的辅助作用
Phi-3-mini-4k-instruct-gguf在LSTM时间序列预测项目中的辅助作用 1. 引言:小模型的大作用 最近在做一个LSTM时间序列预测项目时,我发现了一个有趣的现象:虽然最终模型训练用的是大参数量的LSTM网络,但在整个项目流程中…...
