题目描述:
解题思路:
套用快速排序单边循环法思想,记录第一个数的角标为tag,然后逐一进行比对,如果大于tag的值,则将tag+1的数和比对的数互换(同一个就别换了)。
代码:
class Solution {
public int removeDuplicates(int[] nums) {
int length = nums.length;
if (length <= 1) {
return length;
}
int tag = 0;
for (int i = 1; i < length; i++) {
if (nums[i] > nums[tag]) {
if (i != tag + 1) {
// 如果是同值数这么互换,这个值会变成0的,务必注意
nums[tag + 1] = nums[tag + 1] ^ nums[i];
nums[i] = nums[tag + 1] ^ nums[i];
nums[tag + 1] = nums[tag + 1] ^ nums[i];
}
tag++;
}
}
return tag + 1;
}
}