LeetCode 每日一题

删除排序数组中的重复项

image.png

思路

双指针法
提供的数组有个特性,就是已经排序好的。
需要处理的为记录当前出现的唯一元素的位置,此处通过一个指针标记,另外还需要一个指针来记录当前遍历的元素位置。
此处有个边界需要特别处理,即数组长度为1的时候。

class Solution{
     public int removeDuplicate(int[] nums){
            // 边界处理
            if(nums.length<=1){
                    return 1;
            }
            // 记录唯一值的指针
            int i=0;
           for(int j=1;j<nums.length;j++){
                if(nums[j]!=nums[i]){
                    nums[++i]=nums[j]; // 此处采用++i递增,即将唯一元素指针偏移后进行赋值,及保证题目中要求的在原地修改输入数组。
                }
           }
           return i+1;
     }
}

关于作者

Kirago
扯淡第一名
获得点赞
文章被阅读