0
点赞
收藏
分享

微信扫一扫

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

IT影子 2021-09-21 阅读 62
今日算法
题目描述:
说明:
示例 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 条评论