新闻详情

新闻详情

首页 / 资讯中心 / 详情

【Java基础练习——有序数组去重(快慢指针解法)】

发布时间:2026/9/30 4:18:57来源:尧图网络
【Java基础练习——有序数组去重(快慢指针解法)】
一、题目给定有序递增数组要求原空间内去除重复不新开数组最终输出不重复元素重复元素直接覆盖。示例数组{1122223333}最终保留 {123}运行环境说明VS CodeJava 17,本文件的类名是BasicGrammar。Java要求public类名要和文件名完全一致所以保存文件名是BasicGrammar.java,否则编译器会报错二、拆题用快慢指针思想1指针理解慢指针 slow指“当前最后一个不重复的数”slow 就停在上一个保留的数的位置等待接收新的不同数快指针 fast负责向前走去找新的不重复数2思路1.假设 slow从索引0第一个元素开始2. fast 从索引 1 第二个数开始遍历全部数3. 相等 fast跳过一个重复数不相等 slow 快指针的数据存入慢指 针 fast这块的顺序要注意4.遍历结束后[0 slow] 区间即为所得的无重复的数的集合三、完整可运行代码import java.util.Scanner;public class BasicGrammar{public static void main(String[] args){Scanner scnew Scanner(System.in);System.out.print(“请输入数组的长度”);int lensc.nextInt();int []arrnew int[len];System.out.println(“请输入有序数组的”len“个元素”);for(int i0;iarr.length;i){arr[i]sc.nextInt();}int fast1; int slow0; while(fastarr.length){ if(arr[slow]arr[fast]){ fast; }else{ slow; arr[slow]arr[fast]; fast; } } System.out.println(去重之后剩余有效元素); for(int i0;islow;i){ //这块限制范围是小于slow而不是小于arr.length,否则会输出原数组的信息而不是重新排布的不重复的信息 System.out.println(arr[i]); } sc.close(); }}输出结果四、遇到的问题问题1输出范围写成 arr.length错误后果数组只是前半段被覆盖后半段旧重复数据还在会输出 1 2 3 2 2 2 3 3 3 3 理解快慢指针去重没有删除数组元素只是把不重复元素往前覆盖有效长度 slow下标 1问题2顺序写反先赋值再slow错误后果会覆盖掉之前的合法数据第一个数据直接丢失整体错位。理解先 slow 腾出空位 再存新数据问题3slow、fast初始值写反slow1fast0slow 永远从 0保留第一个数fast 永远从 1开始往前走五、算法复杂度分析1)时间复杂度O(n)fast指针一次性遍历数组没有嵌套循环2)空间复杂度O(1)原地算法不开新数组极致优化六、QA1.为什么有序数组才能用快慢指针因为有序数组重复元素一定相邻fast只需要和前一个有效值对比即可.2.如果数组无序还能用这个方法吗不能需要借助 Set 去重空间复杂度会变成 O(n).HashSet需要分配额外内存HashSet不维护内存空间用LinkedHashSet可保留原数据的顺序3.为什么最终有效长度是 slow1因为数组下标从0开始slow是最后一个有效下标元素个数 slow1.本题虽然属于入门级题目边界条件却存在坑点是为个人学习Java记录如有问题欢迎各位大佬批评指正
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

什么是多模态模型?多模态能力对 Agent 应用(如图文理解、语音交互)有何价值? 2026/9/30 5:20:52

什么是多模态模型?多模态能力对 Agent 应用(如图文理解、语音交互)有何价值?

多模态模型:原理及对 Agent 应用的价值一、什么是多模态模型 定义 多模态模型(Multimodal Model)是能够同时接收、理解和生成多种类型数据(文本、图像、音频、视频等)的 AI 模型。传统大语言模型只处理文本一种模态&am…

阅读更多 →
VMware Tools共享文件夹报错真相与替代方案 2026/9/30 5:20:51

VMware Tools共享文件夹报错真相与替代方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
SGLang Omni 压测实战:Batch Size 与吞吐延迟的调度取舍 2026/9/30 5:20:51

SGLang Omni 压测实战:Batch Size 与吞吐延迟的调度取舍

上周五下午,我和同事在 SGLang Omni 多模态服务的压测上吵了一架。他坚持把 batch size 拉到 256,理由是吞吐比 16 时翻了快三倍,GPU 利用率也好看;我坚持只敢开到 32,因为线上 P99 延迟已经飘到不可接受。吵到最后&am…

阅读更多 →
零售库存预测实战:DeepSeek-R1-Distill低成本微调指南 2026/9/30 5:20:45

零售库存预测实战:DeepSeek-R1-Distill低成本微调指南

简介:这份PDF面向零售行业数据分析师、算法工程师及希望将大模型落地业务的技术人员,聚焦库存预测这一核心场景,讲解如何以低成本方式微调DeepSeek-R1-Distill模型。资源包仅含1个PDF文件,大小约1.86MB,内容完整、图表…

阅读更多 →
微信小程序电影票订票系统全栈设计与避坑指南 2026/9/30 5:20:45

微信小程序电影票订票系统全栈设计与避坑指南

简介:这是一份围绕微信小程序电影票订票系统的设计与实现文档,面向需要开发同类项目的开发者与在校学生,可作毕业设计或课程设计的完整参考。内容按软件工程结构梳理,先介绍系统三层架构,再分模块讲解用户管理、电影展…

阅读更多 →
基于Laya开源模型微调System 1决策引擎:从数据构造到LoRA实操部署 2026/9/30 5:20:45

基于Laya开源模型微调System 1决策引擎:从数据构造到LoRA实操部署

最近开源社区有个项目火得有点不讲道理了,Laya,17K Star,标题直接写着“爆打Jev”。我一开始以为又是营销号吹出来的,后来自己搭环境跑了一轮,从下载权重到构造数据、LoRA微调、再压到本地推理,整套流程走下…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉