s1.4 力扣之删除排序数组中的重复项

给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。

不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

//双指针思路
public static int removeDuplicates(int[] nums)
        {
            if (nums == null && nums.Length == 0)
                return 0;

            int left = 0;

            for (int right = 1; right < nums.Length; right++)
            {
                //如果左指针和右指针指向的值一样,说明有重复的,
                //这个时候,左指针不动,右指针继续往右移。如果他俩
                //指向的值不一样就把右指针指向的值往前挪
                if (nums[left] != nums[right])
                    nums[++left] = nums[right];
            }
            
            return ++left;
        }

static void Main(string[] args)
        {
            int[] nums = { 1, 1, 2 };
            removeDuplicates(nums);
        }

  

  

原文地址:https://www.cnblogs.com/yzenet/p/15718532.html