Leetcode:27. 移除元素

力扣题目链接

解题思路

首先很容易想到暴力解法,用两个for循环,第一个for循环用来遍历整个数组,第二个for循环用来更新数组.但这种解法的时间复杂度为O(n^2)

因此考虑双指针思想,通过一个快指针和慢指针在一个for循环下完成两个for循环的任务,其中,快指针用来寻找新的元素,即和目标值不相同的元素.慢指针用来指向这些元素.

代码

class Solution {
    public int removeElement(int[] nums, int val) {
        int idx = 0;
        for (int x : nums ){
            if ( x != val) nums[idx ++] = x;
        }
        return idx;  
    }
}

你可能感兴趣的:(leetcode,算法,数据结构)