最优去重算法探索

AI搜索算法实战:深度优先 vs 广度优先 vs A*,5种场景性能对比与Python实现 本文深入对比了人工智能领域中三种经典搜索算法——深度优先搜索(DFS)、广度优先搜索(BFS)和A*算法在五种典型场景下的性能表现,并提供了完整的Python实现。通过实测数据展示各算法在时间复杂度和内存消耗上的差异,帮助开发者根据具体需求选择最优算法,提升AI应用的搜索效率。 阅读详情

最优去重算法探索

标签(空格分隔): 数据结构与算法 Java-Base


去重需求

  1. 去重
  2. 要统计最热门查询,首先就是要统计每个Query出现的次数,然后根据统计结果,找出Top 10

算法设计

双层遍历实现

实现逻辑:遍历源数组,依次比较当前元素arr[n]与arr[n + 1]…arr[last],若相等标识重复元素,切记录唯一项到结果target。

时间复杂度:循环了(n+n-1+n-2+…+1)≈(n^2)/2,因为时间复杂度是不考虑系数的,所以是

O(n2)

样本数据:正整数数组,只有一项为重复元素,99%不重复

执行结果耗时:

样本数耗时
10w1.247s
20w4.971s
30w36.773s

Code:

    private static void removeDuplicateByList(int[] arr) {

        List<Integer> target = new ArrayList<Integer>();    //处理结果数组

        startWatch();

        for (int i = 0; i < arr.length; i++) {

            if (arr[i] == -1) continue;
            for (int j = i + 1; j < arr.length; j++) {

                if (arr[i] == arr[j]) { //记录重复元素下标
                    arr[j] = -1;
                }
            }
            target.add(arr[i]);
        }
        stopWatch();
    }

Hash实现

实现逻辑:Set是一个不包含重复元素的collection,其本质是Map,通过元素的hashCode确定在Map数组的位置下标,相同位置下标且值不等,且入链表;相同位置下标且值相等则排除;理论上,最优情况是样本数组全部数据hash下标不相同,无需进行equal()比较,时间复杂度为O(1)

时间复杂度:最优情况

O(1)
最坏情况
O(n)

样本数据:正整数数组,只有一项为重复项,99%不重复

执行结果耗时:

样本数耗时
10w0.016s
20w0.023s
30w0.025s
100w0.198s

Code:

    private static void removeDuplicateBySet(int[] arr) {
        Set<Integer> target = new LinkedHashSet<Integer>();

        startWatch();
        for (int i = 0; i < arr.length; i++) {
            target.add(arr[i]);
        }
        stopWatch();
    }
RRT与RRT*算法具体步骤与程序详解(python) 提示:前面写了A*、D 文章目录前言一、RRT的原理与步骤二、RRT算法编写的步骤2.读入数据总结 前言 RRT和RRT*的区别: RRT的中文名为快速随机探索树,它的原理很简单,实际上就是维护一棵路径树:从起点开始,在空间中随机采样,并找到路径树上与采样点最接近且能与它无障碍地连接的点,连接这个点与采样点,将采样点加入路径树,直至终点附近区域被探索到。这种方式无法保证得到的路径是最优的。 RRT* 在RRT基础上做了改进,主要是进行了重新选择父节点和重布线的操作。试想在RRT中,我们的采样点最终与整. 阅读详情

相关推荐

最优传输-Sinkhorn算法(第九篇)

最优传输系列是基于Computational Optimal Transport开源书的读书笔记 Sinkhorn算法 在上一篇里,我们介绍了加入熵正则化的最优传输问题–熵正则化通过限制最优传输问题解的复杂度,可以以大幅降低的复杂度得到最优传输问题的近似解。 不过,熵正则化仍然是一个概念,需要一个有效的算法,才能够释放它的潜力。 所以,在这一篇里,我们探索实际应用中十分常见的Sinkhorn算法。...

Grant Tour of Algorithms 2万+

腾讯面试题(除掉N个整数中重复数)解题(线性时间,原地置换排序算法)(已修正)...

题目:一个大小为N的数组,里面是N个整数,怎样去除重复, 要求时间复杂度为O(n),空间复杂度为O(1). //下面的思路没问题,但算法有问题,修正后的算法见后面. /// &lt;summary&gt; /// 需要除掉重复的整数的数组,注意这里我没有处理负数情况, /// 其实负数情况只要先用0快排分一下组,然后各自用以下算法进行处理即可。 /// 另外因为是整数,这里...

javasalatu 262

探索Dijkstra算法的普遍最优性:从经典算法到最新学术突破

在计算机科学中,Dijkstra算法是解决单源最短路径问题的经典算法,尤其在地图导航、网络通信和机器人路径规划等领域有着广泛应用。近期,学术界在此算法上取得了重大突破:研究人员证明了Dijkstra算法的“普遍最优性”,即无论图结构多复杂,算法都能在最坏情况下达到理论上最优的性能。本文将深入解读Dijkstra算法的原理、应用、最新研究进展以及其普遍最优性对技术领域的影响。

weixin_41496173的博客 2466

整数去重(信息学奥赛一本通-T1117)

【题目描述】 给定含有n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的数,只保留该数第一次出现的位置,删除其余位置。 【输入】 输入包含两行: 第一行包含一个正整数n(1 ≤ n ≤ 20000),表示第二行序列中数字的个数; 第二行包含n个整数,整数之间以一个空格分开。每个整数大于等于10、小于等于5000。 【输出】 输出只有一行,按照输入的...

Alex_McAvoy的博客 2万+

算法 | A*算法实现最优路径规划

启发式探索是利用问题拥有的启发信息来引导搜索,达到减少探索范围、降低问题复杂度的目的。A*寻路算法是启发式探索的一个典型实践,在寻路搜索的过程中,给每个节点绑定了一个估计值(即启发式),在对节点的遍历过程中采取估计值优先原则,估计值更优的节点会被优先遍历。...

不断学习,不断进步,提高自己 6635

常见的海量数据处理方法

1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。 s 遍历文件a,对每个url求取 ,然后根据所取得的值将url分别存储到1000个小文件(记为 )中。这样每个小文件的大约为300...

程序员的艺术人生! 1105

開機自動進入UEFI Interactive Shell無法正常開機怎麼辦?

BIOS/UEFI,啟動後進入UEFI Interactive Shell大多數人都告訴你沒有安裝系統去裝系統吧,但你明明昨天還在運行系統?今天就這樣?有沒有解決辦法?

sheaahhoi1的博客 7745

大数据量级下常用去重算法的原理和实现介绍

更多内容关注微信公众号:fullstack88801、BitMapBit-map的基本思想就是用一个bit位来标记某个元素对应的Value,而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。(PS:划重点节省存储空间)假设有这样一个需求:在20亿个随机整数中找出某个数m是否存在其中,并假设32位操作系统,4G内存在Java中,int占4字节,1字节=8位(...

qianshanding0708的博客 3884

Pyradiomics 医学影像提取放射组学特征(下)

Pyradiomics 医学影像提取放射组学特征(下)

Edward的博客 1317

基于单片机的自动喷淋系统设计【毕业设计】

随着人民生活质量提高与生活节奏的加快,城市居民对于花草绿植的家庭培养与装饰需求增加,随之因浇灌植物的需要,智能浇花系统的市场逐渐扩大。现有自动浇花系统大部分只能通过设置固定浇水时间而难以实现适时、适量浇水,或在植物环境土壤含水量低时进行报警而并不能实际补水。为克服局限性而设计以单片机为控制中心的自动浇花系统。通过湿度传感器检测目标植物环境土壤湿度数据,再经ADCO832将其放大转换为数字量,由单片机读取输出向LCD1602 显示屏显示并通过比对键盘向单片机所设置的湿度范围而利用中断服务程序进行补水需求判断。

qq_48771816的博客 1712

PV、UV的基本概念。UV如何实现去重?

PV 即页面浏览量或点击量。度量方法就是从浏览器发出一个对网络服务器的请求(Request),网络服务器接到这个请求后,会将该请求对应的一个网页(Page)发送给浏览器,从而产生了一个 PV。 UV (unique visitor )即独立访客数,指访问某个站点或点击某个网页的不同 IP 地址的人数。 去重分两种:基本的数据结构(Hashset等)、借助框架去实现(bigmap、hyperloglog等)。 bigmap、hyperloglog的相同与不同 相同: 以非常精凑的结构存储去重集合的.

Elizabeth_ZSY的博客 3199

从零到一:3D-ResNet50在医学影像中的实战陷阱与避坑指南

本文深入探讨了3D-ResNet50在医学影像分类中的实战应用,重点解析了NIFTI数据预处理、小样本迁移学习陷阱及GPU显存优化等关键问题。通过分块加载、混合精度训练等技巧,有效解决了医学影像处理中的内存管理和性能挑战,为开发者提供了实用的避坑指南和优化策略。

weixin_29038345的博客 392

算法剪枝小记

剪枝,算法

weixin_56742836的博客 277

AWR1642+DCA1000EVM 不使用mmWave Studio软件采集原始ADC数据 Timeout问题汇总

DCA1000 EVM Timeout问题汇总

Jesy_Hsu的博客 1476

组合导航(八):INS/GPS组合导航

INS/GPS组合导航1 误差反馈1.1 开环INS/GPS架构1.2 闭环INS/GPS架构2 组合导航的类型2.1 松耦合 的INS/GPS组合导航2.2 紧耦合 的INS/GPS组合导航2.3 深度耦合的 INS/GPS组合导航3 INS方程的动态误差模型4 松耦合的INS/GPS组合导航模型4.1 系统模型4.2 测量模型4.3 INS/GPS松耦合总框图5 紧耦合的INS/GPS组合导航模型5.1 系统模型5.2 测量模型 INS/GPS组合导航 对比INS与GPS导航方法,二者都有其各自的优.

weixin_43793960的博客 3万+

通过哈希算法实现图片去重

图像去重:MD5和SHA算法 最近找了几个关于图像去重的博文,整理了一下,和大家分享。 采用感知哈希算法基于python-PIL的图像去重 https://blog.youkuaiyun.com/Gentle_Guan/article/details/73384767 用Python实现通过哈希算法检测图片重复的教程 http://www.jb51.net/article/63320.htm ...

ZM970307的博客 1万+

多出来的那一截:Java 堆外内存 OOM 的来源分账、分流排查与治理解析

Java进程的RES常比-Xmx多出一截,堆却平稳。本文把堆外内存拆成直接缓冲区、Unsafe、JNI本地库、线程栈、元空间与文件映射六类,用JDK 8与17的六组实验对照RSS、NMT、BufferPool三本账:clear()不释放内存;MaxDirectMemorySize默认约等于堆上限且只管直接缓冲区;禁用显式GC会让申请线程退避半秒后失败;未关闭的Deflater零GC下让RSS涨1GB;Netty池内泄漏GC救不回。最后给出定性、对账、定位的排查路线与预算、编码、监控三层治理。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 14万+

用A*算法实现迷宫寻路的最优解

写在前面 本文是我查阅资料参考了他人的算法思路,然后进行记录总结,鄙人水平有限文章中可能会有错误之处,大家做个参考即可,如若有错误希望大家能够坚定自己的想法,别被鄙人带偏。 参考文章:http://www.gamedev.net/reference/articles/article2003.asp 用A*算法实现迷宫寻路的最优解的算法思路 ​ 迷宫问题有很多的解法,通常我们使用这两种解法:一种是深度策略(DFS),另一种是广度策略(BFS)。这两种策略各有各的优缺点: BFS:对于解决最短或最少问题特别有

yghlqgt的博客 6973

用playwright封装一个处理web网页的爬虫,并隐藏自动化特征,自动处理反爬

本文介绍了一个使用Playwright封装的Python爬虫函数,具备反爬对抗能力。该脚本通过移除自动化标志、注入真实用户代理、禁用Chrome自动化属性等措施,有效绕过电商、新闻等中等反爬网站的检测。核心功能包括:隐藏navigator.webdriver标志、模拟人类浏览行为、设置合理的设备参数,并支持代理和延迟加载。使用时需注意避免高频访问并定期更新User-Agent。该方案适用于需要JavaScript渲染的动态网页,性能优于非无头模式。

数据知道的博客 3394

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

最优化算法——常见优化算法分类及总结

之前做特征选择,实现过基于群智能算法进行最优化的搜索,看过一些群智能优化算法的论文,在此做一下总结。 最优化问题  在生活或者工作中存在各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题“在一定成本下,如何使利润最大化”等。最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某...

测试0901-1 2万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

如何实现全局最优算法

并结合问题特性定制化设计。对于复杂问题,混合算法(如“全局搜索+局部细化”)和自适应策略往往比单一算法更有效。全局最优算法的核心是平衡。全局最优算法的核心是。

喝醉酒的小白 1196

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Langfuse 仓库中的 Turborepo 实践指南:任务管线、缓存与 CI 排障全解

Turborepo 是面向 JavaScript/TypeScript monorepo 的构建系统,它基于依赖图缓存任务输出并并行执行任务。本指南以 Langfuse 仓库自带的 Turborepo 技能文档([`.agents/skills/turborepo/SKILL.md`](https://link.gitcode.com/i/b1c0abdee0744b09ee3ccdd28026e

gitblog_00014的博客 645

本科经典算法Dijkstra,被证明是普遍最优了:最坏情况性能也最优!

金磊 发自 凹非寺量子位 | 公众号 QbitAI时隔近70年,那个用来解决最短路径问题的经典算法——Dijkstra,现在有了新突破:被证明具有普遍最优性(Universal Optimality)。什么意思?这就意味着不论它面对多复杂的图结构,即便在最坏情况下都能达到理论上的最优性能!而且这还是学术界首次将这一概念应用于任何序列算法。△图源:Quantamagzine对于Dijkstra算法,...

量子位 1万+

爬山算法:探索局部最优解的搜索算法

爬山算法(Hill Climbing Algorithm)是一种启发式搜索算法,主要用于解决优化问题。其目标是在一个解空间中找到局部最优解,或者在某些改进下尽可能接近全局最优解。与其他搜索算法(如广度优先搜索和深度优先搜索)不同,爬山算法不需要完整地遍历整个解空间,而是通过不断“爬升”到更优解来逐步接近目标。虽然爬山算法非常简单并且在某些情况下非常有效,但它也有局限性,比如可能会陷入局部最优解,或者在复杂问题上表现不佳。然而,通过合理的策略改进,爬山算法依然可以应用于许多实际问题。

m0_62710548的博客 2194
下一篇: 插入排序分析与Java实现
Tgor
博客等级 码龄17年 1粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值