LeetCode第二十六题(删除有序数组中的重复项)

238 阅读1分钟

元素前移法(快慢指针)

核心思想: 由于首元素(下标0)必为不重复项,故从下标1开始,依次将有序数组中的不重复项添加到数组中,并利用count统计数组中不重复元素的个数,即删除后数组的新长度。简单地说,就是把数组中不重复的元素依次前移到数组的开始位置。

class Solution {
    public int removeDuplicates(int[] nums) {
        if(nums.length == 0)//特判
            return 0;
        int cur = nums[0];//当前待比较元素
        int count = 1;//数组中不重复元素的个数
        for(int i = 1; i < nums.length; i++){
            if(nums[i] != cur){
                nums[count++] = nums[i];//从下标1开始将不重复元素添加到数组中
                cur = nums[i];//更新待比较元素
            }
        }
        return count;
    }
}