数组 有序的情况下去重
有序的情况下只要将每一个元素与已经去重的数组的最后一个对比相等就下一个元素,不相等就赋值到已去重的后一位
public int removeDuplicates(int[] nums) {
if (nums.length == 0) {
return 0;
}
int i = 0;
//从第二个元素开始遍历整个数组
for (int j = 1; j < nums.length; j++) {
//如果后面一个元素等于已经保存的nums[i](已经去重的数组的最后一个元素),遍历继续
//不相等才回去++i将元素移动到nums[i],
if (nums[j] != nums[i]) {
i++;
nums[i] = nums[j];
}
}
return i + 1;
}
时间复杂度:O(n),假设数组的长度是 n,那么 i和 j 分别最多遍历 n 步。
空间复杂度:O(1)。
数组 无序去重
双层指针法(两层for循环)
public<