java-双指针-删除数组指定数字

这篇博客介绍了如何使用Java的双指针技巧来删除数组中的指定数字,同时保持其他数字的相对位置不变。通过建立新数组或使用双指针覆盖的方法实现删除效果,详细解释了覆盖过程中可能遇到的问题及解决方案。
摘要由CSDN通过智能技术生成

删除数组中的指定数字我们要做到:
1.找到数组中存在的指定数字
2.删除它,并保持其他数字的相对位置不变,可以正常输出。

于是我们的任务就是**找到指定数字以及保证除此以外的数字可以按原来的相对位置输出。**这样单在效果上看我们就完成了删除指定元素的效果。
总而言之,如果,我们能保证除指定元素以外的数字能正常输出那么在视觉效果上我们就达到了删除指定元素的效果。

综上,如果不使用双指针,其实有一种更简单的方法:设指定元素为val,我们先建一个数组ans,遍历题中给的数组nums,如果nums[i] ! =val,那么我们将nums[i],存储在ans中,最后,输出ans.我们就得到了一个指定元素被删除的nums.

如果使用双指针: 双指针的删除采用的是覆盖的方法。 设指定的数字为val, 一个指针left负责检测数字,当检测到val时,另一个指针right的任务就是帮第一个指针找到替代该位置val 的数字。当right遍历到数组尾的时候就结束循环用val之后的第一个非val来替代val,这就是覆盖
现在我们以及弄清了双指针删除的原理,但是如果我们只是这样做会出现一个问题:现在假设题中给的数组为【1,2,2,3,4,5】,要删除的元素是2,
两个2的位置会分别被3,4,替代,我们的输出结果是【1,3,4,3】,观察发现我们还需要原来3的位置被5替代,才能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

近藤的小橘晶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值