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

优选算法(双指针)

 

1.双指针介绍

双指针算法是一种常用的算法思想,特别适用于处理涉及阵列、链表或字符串等线性数据结构的问题。通过操作两个一个指针来进行导航或操作数据结构,双指针可以最大程度优化解决方案的效率。提高效率并减少空间复杂度。

在Java中使用双指针的核心思想是通过两个变量(通常是索引或节点)来标记处理数据的起点和终点,动态调整它们的位置以实现目标。

2.双指针的基本概念

  • 什么是双指针?

  • 双指针是指在同一个数据结构上使用双指针(通常是变量或索引)同时移动。

双指针的类型:

1.对撞指针(Two-pointer Technique)

特点

  • 两个指针从数据结构的端点出发,向中间移动。
  • 另外根据问题要求调整其中一个指针,直到找到满足条件的结果或两个指针满足。
  • 适用于集群阵列或需要从端点开始处理的线性数据结构。

应用场景

  • 求和问题:在集群队列中找到两个数且相等的目标值。
  • 判断回文:验证字符串是否为回文。
  • 区间问题:如盛水最多的容器。

2.快慢指针(慢速指针和快指针)

特点

  • 指针从同一位置开始,快两个指针的移动速度通常是慢指针的两倍。
  • 常用于链表问题,快指针先走缩小范围或提前发现特定条件,慢指针才能准确定位。
  • 适用于需要检测循环寻找特定位置(如链表的中点)的场景。

应用场景

  • 环检测:检测链表是否有环。
  • 寻找中点:在链表中找到中间节点。
  • 删除节点:删除链表中倒数第nnn一个节点。

3.滑动窗口(Sliding Window)

特点

  • 两个指针用于表示一个窗口,通常是左指针left和右指针right
  • 右铰链延伸窗口,左铰链收缩窗口,直到窗口满足要求。
  • 适用于动态范围问题,如求最短/最短子串。

应用场景

  • 终止子串:查找无重复字符的终止子串。
  • 最小覆盖子串:查找包含目标字符的最短子串。
  • 子储备和问题:如找到和最大某值的最短子储备。

4.固定间隙指针(Fixed Gap Pointers)

  • 定义:两个指针之间的距离固定,用于同时遍历不同的元素。

  • 适用场景

    1. 判断字符串的某种模式匹配。
    2. 滑动窗口的变体问题。

5. 双向扫描(双向扫描)

  • 定义:两个指标分别从两端向中间移动,但条件可能比较复杂,不一定同时向中靠英镑。

  • 适用场景

    1. 排序索引的双指针应用。
    2. 字符串匹配问题(如跳过某些字符)。

3.题目讲解

  1. 283.移动零
  2. 1089. 复写零
  3. 202. 快乐数
  4. 11. 盛最多水的容器
  5. 611. 有效三角形的个数
  6. LCR 179. 查找总价格为目标值的两个商品 (原:剑指 offer:和为 s 的两个数)
  7. 15. 三数之和
  8. 18. 四数之和

1.移动零

1.题目解析

 从题目中我们可以了解到,只需要把数组中的0移动到最后的位置即可

2.讲解算法原理

这题我们用到快慢指针思想,我们直接定义两个指针,

fast:从左往右扫描数组,遍历数组

slow:已处理的数组区间内,非0下标的最后一个位置

示例1
-1010312
fast
slow

我们先让fast去扫描数组中的值,当遇到0时我们不进行任何操作,让fast++,当数组中的值不为0时,我们就让slow++;

1.fast遇到0,slow不走

-1010312
fast
slow

2.fast遇不为0时,slow++;

-1010312
fast
slow

3.这个时候我们将快慢指针中的两个数字进行交换

-1100312
fast
slow

4.换完之后我们 fast 继续走,因为num[2] = 0 ,所以slow不动

-1100312
fast
slow

5. fast 继续走,因为num[3] = 3 ,slow++ 并将这两个指针里的值进行交换

走完:

-1100312
fast
slow

 交换:

-1130012
fast
slow

5. fast 继续走,因为num[4] = 12 ,slow++ 并将这两个指针里的值进行交换

走完:

-1130012
fast
slow

 交换:

-1131200
fast
slow

 至此我们就全部走完了,从上面的分析我们可以得出几点:

fast从前往后便利过程中:

1.当fast没遇到0时,我们就让slow++,并交换两个指针中的值;

2.当fast遇到0时,我们就让fast++;

3.编写代码

2.复写零 

1.题目解析

 从题目中我们可以了解到,只需要把数组中的0移动到最后的位置即可

2.讲解算法原理

这题我们用到快慢指针思想,我们直接定义两个指针

如果我们按照上题的便利方法时,我们从头开始走:

当 slow 遇到0时,我们就让fast+=2,没遇到时,我们让fast++;并将fast走的数组值改为0;

示例1
数组(-1)10230450
fast
更改后
slow
更改后

1.

数组(-1)10230450
fast
更改后1
slow
更改后1

2.

数组(-1)10230450
fastfast
更改后100
slow
更改后1000000

这个时候我们会发现fast将num[2] = 2 的值修改为0了,我们的slow接下来获取的值为0;那么

fast将继续走两步,并将fast走过后的值改为0,最后我们得到的值就为最后一行的内容,因此我们这样走是错的,所以我要改变思想,既然从前面行不通我们就可以想从后往前呢?

如果我们从后往前:

1.我们要确定是从后面的哪个位置开始往前便利

1.先判断 slow 位置的值
2.决定 fast 向后移动一步或者两步
3.判断一下 fast 是否已经到结束为止
4.slow++

2.处理边界情况(当最后一个位置为0时):

我们的 fast 依然会加+=2;此时数组就越界了;所以我们要判断一下 fast 是否等于我们的数组长度;如果不等于的话,我们只需将数组改回就行,

if(fast == length) {

            arr[length - 1 ] = 0;

            slow--; fast-= 2;

}

3.“从后往前”完成复写操作

3.代码编写

3.快乐数

1.题目解析

  • 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
  • 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
  • 如果这个过程 结果为 1,那么这个数就是快乐数。

 2.讲解算法原理

这题我们用到快慢指针思想,来解决检测循环寻找特定位置(如链表的中点)的场景。

我们直接定义两个指针,

fast:快指针每次向前走两步

slow: 慢指针每次往前走一步

等他俩相遇时,判断一下值即可。

示例1:

19 : 1^2+9^2 = 82 : 8^2+2^2 = 68 : 6^2+8^2 = 100 : 1^2+0^2+0^2 = 1;

示例2:

2 ->4->16->37->58->89->145->42->20->4->16

此时我们的示例2就为环一直循环了。

当他们为环时:我们的快指针就会先一步到达 1并开始循环1;而我们的慢指针则到达1后再开始循环1;所以当他们都为1时,就跳出循环即可。

讲解为什么这是一个无限循环:

了解:鸽巢原理,也称为抽屉原理,是组合数学中的一个基本原理。

该原理表明,如果有n个鸽巢和m个鸽子(m > n),那么至少有一个鸽巢中会有两个或更多的鸽子。这一原理可以推广到更一般的情况:如果有n个鸽巢和超过kn个鸽子,那么至少有一个鸽巢中有(k + 1)个鸽子。‌

因为此题的范围:

1 <= n <= 2^31 - 1

此时n的范围就为2*10^9;我们直接考虑最大值十个9的情况:

(999999999)能变的次数为 9^2*10 = 810次,于是当我们超过810次时,其中必有两个数是相同的,于是这就成环了。

3.代码编写

4.盛最多水的容器

1.题目解析

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。

找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。

 2.讲解算法原理

我们从题中可以看出要取两端的最大值,并从两端的最大值中找到那个小值,乘上我们的数组长度即可,于是我们要用到的双指针思想是对撞指针来找到另外根据问题要求调整其中一个指针,直到找到满足条件的结果或两个指针满足。

用法:

两个指针从数据结构的端点出发,向中间移动。

开始构思:

左边:left = 0 右边:right = 数组的长度 - 1;

012345678
186254837
leftright

我们开始向中间移动:

1: num[left] = 1 ; num[right] = 7 我们需要取得两数的最小值 来算面积 即为 1 * 8(right - left)= 8(ret)

因为我们要求最大的容积我们就要想指针怎么移动 ,这是我们就要开始对比两边的大小了

当左边小于右边时我们就让 left++ ,反之 right--;

2: num[left] = 8 ; num[right] = 7 我们需要取得两数的最小值 来算面积 即为 7 * 7(right - left)= 49(ret)

3:num[left] = 8 ; num[right] = 3 我们需要取得两数的最小值 来算面积 即为 3 * 6(right - left)= 18(ret)

4 ……

5 ……

直到我们左边的值大于右边即停,找到其中的最大最即可:

3.代码编写

5.有效三角形的个数

1.题目解析

给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。

 2.讲解算法原理

数学知识 :两边之和大于第三边 即为三角形

在做之一类题时,我们都可以先对数组排序:此时我们就可利用单调性,使用双指针去解决问题;

我们要用到的双指针思想是对撞指针来找到另外根据问题要求调整其中一个指针,直到找到满足条件的结果或两个指针满足。

用法:

两个指针从数据结构的端点出发,向中间移动。

开始构思:

2234
n-1
leftright

此时我们牵扯了三个值;

1.先固定最大的数
2.在最大的数的左区间内,使用双指针算法,"快速统计出符合要求的三元组的个数

当我们先固定完最大那个数,剩下我们只需要进行判断即可:

左边:left = 0 右边:right = i - 1;

想完上面后,我们就要想指针怎么移动了

因为数组是有序的:

134567
n -1
leftright

当我们遇到上面这种情况时:if(nums[left] + nums[right] < nums[n - i])

如果我们移动right的值就会发现前面的值都比6小,因此我们只能让left++;

反之将right--;

此时这个区间内的所有数据都符合三角形,相加即可:

3.代码编写

 6.查找总价格为目标值的两个商品

1.题目解析

 购物车内的商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况,返回任一结果即可。

 2.讲解算法原理

我们看这道题时有没有发现和上题非常相似呢?

上题要我们在数组里面固定一个值,而这题我们不需要固定值了而是直接给你,所以我们举一反三可得:

我们要用到的双指针思想是对撞指针来找到另外根据问题要求调整其中一个指针,直到找到满足条件的结果或两个指针满足。

用法:

两个指针从数据结构的端点出发,向中间移动。

开始构思:

左边:left = 0 右边:right = 数组的长度 - 1;

假设数据: target = 9

012345678
leftright

我们就要想指针怎么移动 :

if(nums[right] + nums[left]  =  8  <( target )(9))

如果我们移动right的值就会发现前面的值都比8小,因此我们只能让left++;

反之将right--;

如果我们满足 这两个数相加等于 target 时我们返回这组数据即可;

3.代码编写

7.三数之和

1.题目解析

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != ji != kj != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

 2.讲解算法原理

我们可以看到数组中有正有负,非常不利于我们去操作数组,于是我们可以先将数组排序后

利用单调性去使用双指针去解决问题;

我们要用到的双指针思想是对撞指针来找到另外根据问题要求调整其中一个指针,直到找到满足条件的结果或两个指针满足。

用法:

两个指针从数据结构的端点出发,向中间移动。

开始构思:

1.排序;
2.固定一个数 a;

  • 固定一个数:通过 for 循环遍历数组的每个元素,将其固定为三元组的第一个数 nums[i]
  • 提前退出循环:如果当前数 nums[i] > 0,直接结束循环,因为排序后,nums[i] 后面的数都大于零,三数之和不可能为零。


3.在该数后面的区间内,利用“双指针算法”快速找到两个的和够于 -a 即可。

左边:left = 0 右边:right = 数组的长度 - 1;

  • 双指针初始化
    • left 指向固定数 nums[i] 的下一个元素。
    • right 指向数组的最后一个元素。
    • 目标和target = -nums[i],即寻找两个数的和为 -nums[i]
  • 计算双指针的和sum = nums[left] + nums[right]

我们就要想指针怎么移动 :

三种情况

  1. sum > target:说明当前和太大,需要减小和,所以右指针 right-- 左移。
  2. sum < target:说明当前和太小,需要增大和,所以左指针 left++ 右移。
  3. sum == target:找到一个满足条件的三元组,加入结果列表 ret 中。

处理细节问题:
1.去重
找到一种结果之后,left 和 right 指针要跳过重复元素
当使用完一次双指针算法之后,i也需要跳过重复元素

避免越界

  • 左指针跳过重复值:while (left < right && nums[left] == nums[left - 1]) left++
  • 右指针跳过重复值:while (left < right && nums[right] == nums[right + 1]) right--

2.不漏
找到一种结果之后,不要"停",缩小区间,继续寻找

3.代码编写

8.四数之和

1.题目讲解

给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):

  • 0 <= a, b, c, d < n
  • abcd 互不相同
  • nums[a] + nums[b] + nums[c] + nums[d] == target

你可以按 任意顺序 返回答案 。

 2.讲解算法原理

我们可以看到数组中有正有负,非常不利于我们去操作数组,于是我们可以先将数组排序后

利用单调性去使用双指针去解决问题;

我们要用到的双指针思想是对撞指针来找到另外根据问题要求调整其中一个指针,直到找到满足条件的结果或两个指针满足。

用法:

两个指针从数据结构的端点出发,向中间移动。

开始构思:

1.依次固定一个数 a;
2.在 a后面的区间内,利用“三数之和”找到三个数,使这三个数的和等于 target-a 即可

三数之和:1.依次固定一个数 b;
                   2.在 b 后面的区间内,利用“双指针"找到两个数使这两个数的和等于 target-a-b 即可。

目标值计算:对于当前固定的 nums[i] 和 nums[j],目标值为 aim = (long) target - nums[i] - nums[j]。这里使用 (long) 类型转换,防止加法溢出。

双指针初始化:left 从 j + 1 开始,right 从数组末尾开始。

条件判断

  1. 如果 sum > aim,说明当前和过大,右指针 right-- 左移以减小和。
  2. 如果 sum < aim,说明当前和过小,左指针 left++ 右移以增大和。
  3. 如果 sum == aim,找到满足条件的四元组,加入结果列表 ret。

处理细节问题:

1.去重
找到一种结果之后,left 和 right 指针要跳过重复元素
当使用完一次双指针算法之后,i也需要跳过重复元素

避免越界

  • 左指针跳过重复值:while (left < right && nums[left] == nums[left - 1]) left++
  • 右指针跳过重复值:while (left < right && nums[right] == nums[right + 1]) right--

2.不漏
找到一种结果之后,不要"停",缩小区间,继续寻找

3.代码编写

相关文章:

优选算法(双指针)

1.双指针介绍 双指针算法是一种常用的算法思想&#xff0c;特别适用于处理涉及阵列、链表或字符串等线性数据结构的问题。通过操作两个一个指针来进行导航或操作数据结构&#xff0c;双指针可以最大程度优化解决方案的效率。提高效率并减少空间复杂度。 在Java中使用双指针的核…...

【保姆级】Mac上IDEA卡顿优化

保姆级操作,跟着操作即可~~~ 优化内存 在你的应用程序中,找到你的idea 按住control键+单击 然后点击“显示包内容” </...

python实战案例----使用 PyQt5 构建简单的 HTTP 接口测试工具

python实战案例----使用 PyQt5 构建简单的 HTTP 接口测试工具 文章目录 python实战案例----使用 PyQt5 构建简单的 HTTP 接口测试工具项目背景技术栈用户界面核心功能实现结果展示完整代码总结 在现代软件开发中&#xff0c;测试接口的有效性与响应情况变得尤为重要。本文将指导…...

pytest 接口串联场景

在编写接口测试时&#xff0c;如果有多个接口需要串联在一起调用&#xff0c;并且这些接口共同构成了一个业务场景&#xff0c;通常可以使用以下几种方法来组织代码&#xff0c;使其更具可读性和维护性。以下是一些规范的建议&#xff1a; 1. 使用 pytest 的 fixture 来管理接…...

Springboot项目搭建(2)-用户详细信息查询

1. 提要信息 1.1 java四类八种 在Java中&#xff0c;四类指的是Java中的基本数据类型和引用数据类型&#xff1a; 基本数据类型&#xff1a;Java提供了八种基本数据类型&#xff0c;包括整数型、浮点型、字符型和布尔型。引用数据类型&#xff1a;指向对象的引用&#xff0c…...

Stable Diffusion的加噪和去噪详解

SD模型原理&#xff1a; Stable Diffusion概要讲解Stable diffusion详细讲解Stable Diffusion的加噪和去噪详解Diffusion ModelStable Diffusion核心网络结构——VAEStable Diffusion核心网络结构——CLIP Text EncoderStable Diffusion核心网络结构——U-NetStable Diffusion中…...

解决 Gradle 报错:`Plugin with id ‘maven‘ not found` 在 SDK 开发中的问题

在 SDK 开发过程中&#xff0c;使用 Gradle 构建和发布 SDK 是常见的任务。在将 SDK 发布为 AAR 或 JAR 包时&#xff0c;你可能会使用 apply plugin: maven 来发布到本地或远程的 Maven 仓库。但是&#xff0c;随着 Gradle 版本的更新&#xff0c;特别是从 Gradle 7 版本开始&…...

EMD-KPCA-Transformer多变量回归预测!分解+降维+预测!多重创新!直接写核心!

EMD-KPCA-Transformer多变量回归预测&#xff01;分解降维预测&#xff01;多重创新&#xff01;直接写核心&#xff01; 目录 EMD-KPCA-Transformer多变量回归预测&#xff01;分解降维预测&#xff01;多重创新&#xff01;直接写核心&#xff01;效果一览基本介绍程序设计参…...

前端 px、rpx、em、rem、vh、vw计量单位的区别

目录 一、px 二、rpx 三、em 四、rem 五、vh和vw 六、rpx 和 px之间的区别 七、px 与 rem 的区别 一、px px&#xff08;像素&#xff09;&#xff1a; 1、相对单位&#xff0c;代表屏幕上的一个基本单位&#xff0c;逻辑像素。 2、不会根据屏幕尺寸或分辨率自动调整大…...

OceanBase数据库产品与工具介绍

OceanBase&#xff1a;蚂蚁集团自主研发的分布式关系数据库 1、什么是 OceanBase&#xff1f; OceanBase 是由蚂蚁集团完全自主研发的企业级分布式关系数据库&#xff0c;始创于 2010 年。它具有以下核心特点&#xff1a; 数据强一致性&#xff1a;在分布式架构下确保数据强…...

学习threejs,对模型多个动画切换展示

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.AnimationMixer 动画…...

【Bug合集】——Java大小写引起传参失败,获取值为null的解决方案

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;本文面向的人群 二&#xff1a;错误场景引入 三&#xff1a;正确场景引入 四&#xf…...

Python爬虫:如何从1688阿里巴巴获取公司信息

在当今的数字化时代&#xff0c;数据已成为企业决策和市场分析的重要资产。对于市场研究人员和企业分析师来说&#xff0c;能够快速获取和分析大量数据至关重要。阿里巴巴的1688.com作为中国最大的B2B电子商务平台之一&#xff0c;拥有海量的企业档案和产品信息。本文将介绍如何…...

单片机学习笔记 2. LED灯闪烁

更多单片机学习笔记&#xff1a;单片机学习笔记 1. 点亮一个LED灯 目录 0、实现的功能 1、Keil工程 2、代码实现 0、实现的功能 LED灯闪烁 1、Keil工程 闪烁原理&#xff1a;需要进行软件延时达到人眼能分辨出来的效果。常用的延时方法有软件延时和定时器延时。此次先进行软…...

折叠光腔衰荡高反射率测量技术的matlab模拟理论分析

折叠光腔衰荡高反射率测量技术的matlab模拟理论分析 1. 前言2. 光腔模型3. 光腔衰荡过程4. 衰荡时间与反射率的关系5. 测量步骤①. 光腔调节&#xff1a;②. 光腔衰荡测量&#xff1a;③. 计算衰荡时间常数&#xff1a;④. 反射率计算&#xff1a; 6. 实际应用中的调整7. 技术优…...

ubuntu 16.04 中 VS2019 跨平台开发环境配置

su 是 “switch user” 的缩写&#xff0c;表示从当前用户切换到另一个用户。 sudo 是 “superuser do” 的缩写&#xff0c;意为“以超级用户身份执行”。 apt 是 “Advanced Package Tool” 的缩写&#xff0c;Ubuntu中用于软件包管理的命令行工具。 1、为 root 用户设置密码…...

C语言第13节:指针(3)

1. 回调函数 回调函数的基本思想是&#xff0c;将函数指针作为参数传递给另一个函数&#xff0c;并在需要时通过这个函数指针调用对应的函数。这种方式允许一个函数对执行的内容进行控制&#xff0c;而不需要知道具体的实现细节。 回调函数在以下场景中尤为有用&#xff1a; …...

java:简单小练习,面积

面积&#xff1a;圆和长方形 接口&#xff1a;实现面积 test:调用 一、interface: 对于接口&#xff0c;它是Java中一个新增的知识点&#xff0c;而C中没有&#xff0c;因为Java有一个缺陷就是不可以实现多继承&#xff0c;只可以单继承&#xff0c;这就限制了有些功能的使…...

@Autowired 和 @Resource思考(注入redisTemplate时发现一些奇怪的现象)

1. 前置知识 Configuration public class RedisConfig {Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template new RedisTemplate<>();template.setConnectionFactory(facto…...

PostgreSQL提取JSON格式的数据(包含提取list指定索引数据)

PostgreSQL提取JSON格式的数据&#xff08;包含提取list指定索引数据&#xff09; ->>, ->, #>, #>> 在PostgreSQL中&#xff0c;处理json或jsonb类型数据时&#xff0c;->>, ->, #> 和 #>> 是非常有用的操作符&#xff0c;它们允许你以…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...

qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001

qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类&#xff0c;直接把源文件拖进VS的项目里&#xff0c;然后VS卡住十秒&#xff0c;然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分&#xff0c;导致编译的时候找不到了。因…...

如何做好一份技术文档?从规划到实践的完整指南

如何做好一份技术文档&#xff1f;从规划到实践的完整指南 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 总有一行代码&#xff0c;能点亮万千星辰。 &#x1f50d; 在技术的宇宙中&#xff0c;我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...

npm安装electron下载太慢,导致报错

npm安装electron下载太慢&#xff0c;导致报错 背景 想学习electron框架做个桌面应用&#xff0c;卡在了安装依赖&#xff08;无语了&#xff09;。。。一开始以为node版本或者npm版本太低问题&#xff0c;调整版本后还是报错。偶尔执行install命令后&#xff0c;可以开始下载…...

break 语句和 continue 语句

break语句和continue语句都具有跳转作用&#xff0c;可以让代码不按既有的顺序执行 break break语句用于跳出代码块或循环 1 2 3 4 5 6 for (var i 0; i < 5; i) { if (i 3){ break; } console.log(i); } continue continue语句用于立即终…...

视觉slam--框架

视觉里程计的框架 传感器 VO--front end VO的缺点 后端--back end 后端对什么数据进行优化 利用什么数据进行优化的 后端是怎么进行优化的 回环检测 建图 建图是指构建地图的过程。 构建的地图是点云地图还是什么信息的地图&#xff1f; 建图并没有一个固定的形式和算法…...