算法题目总结-双指针
文章目录
- 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修饰。函数参数格式是变量名:变量类型。函数参数允…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...