给定一个排序好的数组,去除重复的值
- remove 1
https://leetcode.com/problems/remove-duplicates-from-sorted-array/
/**
* @param Integer[] $nums
* @return Integer
*/
function removeDuplicates(&$nums) {
$i = 0;
$j = 0;
while ($j < count($nums)) {
if ($nums[$i] == $nums[$j]) {
$j++;
}else{
$i++;
$nums[$i] = $nums[$j];
$j++;
}
}
return $i + 1;
}
- remove 2
https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/submissions/
有点变种,每个数据可以冗余最多两个在数组中
举例:Given nums = [1,1,1,2,2,3],
Your function should return length = 5, with the first five elements of nums being 1, 1, 2, 2 and 3 respectively.
int i = 0, j = 1, cnt = 1;
if (nums.length <= 2) {
return nums.length;
}
while (j < nums.length) {
//虽然i和j的值相等,但是由于相等的总数已经到2了,所以继续把j++
if ((nums[i] == nums[j]) && cnt == 2) {
j++;
} else {//请注意,在这个else里面,无论如何i和j都需要往后移一位
if (nums[i] == nums[j]) {
//此时i和j的值相等,但是总数没到2,所以直接把cnt+1
cnt++;
} else {
//此时i和j的值不相等,切总数也没达到2,所以这是的j是第一次出现
cnt = 1;
}
i++;
nums[i] = nums[j];
j++;
}
}
return i + 1;









网友评论