26. 删除有序数组中的重复项
解题思路
1.先对数组排序
2.使用双指针的技巧
3.慢指针初始指向nums的初始位0,快指针指向慢指针下一位
4.如果快慢指针的值,相等,则将快指针往后一位,慢指针不动,直到找到快慢指针不同值的位置,然后交换low+1/fast的值
如果快慢指针的值,不等,则快慢指针都向后一位
5.继续快指针向后移动,直到nums末尾
6.慢指针位置,即为不重复数组的大小
后续需要总结学习的知识点
时间复杂度和空间复杂度需要后续优化
##解法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;
}
}