0
点赞
收藏
分享

微信扫一扫

LeetCode27.移除元素

高子歌 2022-01-18 阅读 77

数组的元素在内存地址中是连续的,不能单独删除数组中的某个元素,只能覆盖!

这道题我想到了两种解法:

1.双重for循环,时间复杂度O(n^2)

2.双指针法,时间复杂度O(n)

第一种方法默认大家都会!

思路(双指针)

小提示:JAVA中的指针,不同于C++,JAVA中不需要程序员对指针进行操作, 不过,这不代表JAVA没有指针,事实上,JAVA的指针操作都被底层代码封装了

我们用两个指针,一个快指针,一个慢指针

快指针:探路!遍历数组,如果不等于要删除的目标值val,那么就赋值给慢指针

慢指针:修改原数组,把元素个数累加,返回修改后数组的元素个数

代码实现(双指针法)

class Solution {
    public int removeElement(int[] nums, int val) {
        int fastIndex=0,slowIndex=0;
        for(;fastIndex<nums.length;fastIndex++){
            if(nums[fastIndex]!=val){
                nums[slowIndex++]=nums[fastIndex];
            }
        }
        return slowIndex;
    }
}

很简洁,我相信大家都看得懂!

讲解结束,谢谢大家观看!!!

举报

相关推荐

0 条评论