数据结构和算法分析数据结构与算法

Leetcode-26 删除有序数组中的重复项

2021-09-29  本文已影响0人  itbird01

26. 删除有序数组中的重复项

解题思路

1.先对数组排序
2.使用双指针的技巧
3.慢指针初始指向nums的初始位0,快指针指向慢指针下一位
4.如果快慢指针的值,相等,则将快指针往后一位,慢指针不动,直到找到快慢指针不同值的位置,然后交换low+1/fast的值
如果快慢指针的值,不等,则快慢指针都向后一位
5.继续快指针向后移动,直到nums末尾
6.慢指针位置,即为不重复数组的大小

后续需要总结学习的知识点

时间复杂度和空间复杂度需要后续优化


image.png
##解法1
class Solution {
   public static int removeDuplicates(int[] nums) {
        if (nums.length <= 1) {
            return nums.length;
        }
        Arrays.sort(nums);
        int low = 0, fast = 1;
        while (fast < nums.length) {
            if (nums[fast] == nums[low]) {
                fast++;
            } else {
                low++;
                nums[low] = nums[fast];
            }
        }
        return low+1;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读