删除有序数组中的重复项 II

IT影子

关注

阅读 62

2021-09-21

题目描述:
说明:
示例 1:
示例 2:
思路:

注意:数组是有序的

  • slow = 2, fast = 2
  • 判断nums[slow - 2] == nums[fast] 是否相等
  • 如果想等,说明nums[slow]重复出现了3次
  • 不相等,说明nums[fast]元素符合要求,放到slow位置num[slow] = nums[fast],增加‘有序’边界slow++
  • 数组遍历完返回slow


实现:
class Solution {
    public int removeDuplicates(int[] nums) {
        int slow = 2, fast = 2;
        for (fast = 2; fast < nums.length; fast++) {
            if (nums[slow - 2] != nums[fast]) {
                nums[slow++] = nums[fast];
            }
        }
        return slow;
    }
}

精彩评论(0)

0 0 举报