LeetCode27移除元素的两种方法(Java实现)

LeetCode27移除元素的两种方法

首先,我们来看下题目。

在这里首先补充下数组的知识,我们知道数组中的元素是无法进行删除 的,只能覆盖,我们看到的删除操作实际上是底层进行了覆盖。

那么我们再来看这道题,题目要求找到目标的元素进行删除,那么其实就是让我们将目标元素进行一个覆盖 操作。
方法1:暴力求解

暴力求解的思路如下,首先我们用一个指针flag指向数组下标为0的地方,flag用于遍历整个数组,如果找到了目标值,那么用另一个指针

Key

进行覆盖操作,也就是将所有的元素向前移一位。大概思想就是这样。具体的代码实现如下:

java 复制代码
public static int removeElement(int[] nums, int val) {
    int i=0; //指针用于遍历数组
    int j =0;//用于进行覆盖操作
    int len=nums.length;
    for (i=0;i<len;i++){
        if (nums[i]==val){
            for (j=i+1;j<len;j++){//这里让j=i+1主要是因为防止越界。
                nums[j-1]=nums[j];

            }
            //每进行一次覆盖,数组长度减1,并且让i--,
            //因为可能覆盖之后的元素为目标值。
            len--;
            i--;

        }
    }

    return len;
}

方法1:双指针解法

双指针的思路如下,首先定义一个快指针fast ,定义一个慢指针slow ,快指针用于遍历数组,慢指针用于进行覆盖操作,这里我们举个例子

如图所示,我们将快指针指向第一个元素,同样慢指针指向第一个元素,这时fast 开始遍历,假如我们的targe值为3,遍历到第一个元素发现不是targe值,此时将数组nums[fast]的元素赋值给nums[slow] ,然后slow++ ,进行下一元素的查找。这样遍历到最后,数组就变为[1,2,5],此时slow 指向下标为3的地方,直接对slow进行返回即可。具体的代码实现如下:

java 复制代码
    public static int removeElement(int[] nums, int val) {

        int len =nums.length;
        int slow=0;
        int fast=0;
        for (fast=0;fast<len;fast++){
            if (nums[fast]!=val){
                nums[slow]=nums[fast];
                slow++;
            }
        }
        return slow;


}

今天的例题思路和代码讲解到这里就结束了,如果哪里看不懂可以在文章下方留言,博主看到了会进行答疑,觉得博主写的不错的麻烦给个小小的3连吧,谢谢(●ˇ∀ˇ●)!

相关推荐
玖釉-5 分钟前
三维模型数据结构与存储方式解析
数据结构·算法·图形渲染
萤丰信息13 分钟前
从超级大脑到智能毛细血管:四大技术重构智慧园区生态版图
java·人工智能·科技·重构·架构·智慧园区
帅得不敢出门13 分钟前
Android监听第三方播放获取音乐信息及包名
android·java
qq_2663487316 分钟前
系统白名单接口添加自定义验证(模仿oauth2.0),防安全扫描不通过
java·安全
草莓熊Lotso23 分钟前
《算法闯关指南:优选算法--二分查找》--17.二分查找(附二分查找算法简介),18. 在排序数组中查找元素的第一个和最后一个位置
开发语言·c++·算法
努力努力再努力wz27 分钟前
【C++进阶系列】:万字详解特殊类以及设计模式
java·linux·运维·开发语言·数据结构·c++·设计模式
青云交29 分钟前
Java 大视界 -- Java 大数据在智慧交通自动驾驶仿真与测试数据处理中的应用
java·大数据·自动驾驶·数据存储·算法优化·智慧交通·测试数据处理
reasonsummer31 分钟前
【办公类-115-05】20250920职称资料上传04——PDF和PDF合并PDF、图片和PDF合并PDF(十三五PDF+十四五图片)
java·python·pdf
Mcband32 分钟前
Apache Commons IO:文件流处理利器,让Java IO操作更简单
java·开发语言·apache
缺点内向33 分钟前
Java:将 Word 文档转换为密码保护的 PDF 文件
java·pdf·word