🌕 26. 删除有序数组中的重复项
2022年6月9日
- algorithm
🌕 26. 删除有序数组中的重复项
难度: 🌕
问题描述
解法
class Solution {
public int removeDuplicates(int[] nums) {
// 思路:
// 快慢指针
// 画图理解
int len = nums.length;
// 特殊情况特判
if(len <= 1) {
return len;
}
// len >= 2
int left = 0;
int right = 1;
while(right < len) {
// 找到符合条件的 right 下标
while(right < len && nums[right] <= nums[left]) {
right ++;
}
if(right >= len) {
break;
}
// 和 left 的下一个元素进行交换
if(left + 1 != right) {
swap(nums, left + 1, right);
}
left ++;
right ++;
}
return left + 1;
}
private void swap(int[] nums, int left, int right) {
int tmp = nums[left];
nums[left] = nums[right];
nums[right] = tmp;
}
}