题意:
解题思路:
思路:111223
1. 每个元素最多出现两次,所以可以从第三个元素开始比较;
2. 因为第三个元素跟第一个元素差等于2,所以可以判断是否相等;
2.1 如果不相等,表示第三个位置的元素跟前两个不相等,那么第三个位置为正确位置
2.2 如果相等,则后移指针,用第四个元素跟第一个比较,
第四个元素如果跟第一个不相等,则表示第四个为新元素,可以用第四个元素来代替第三个位置的重复元素;
PHP代码实现:
class Solution {
/**
* @param Integer[] $nums
* @return Integer
*/
function removeDuplicates(&$nums) {
$current = 1;
for ($i = 2; $i < count($nums); $i++) {
if ($nums[$i] != $nums[$current - 1]) {
$current += 1;
$nums[$current] = $nums[$i];
}
}
return $current + 1;
}
}
GO代码实现:
func removeDuplicates(nums []int) int {
current := 1
for i := 2; i < len(nums); i++ {
if nums[i] != nums[current - 1] {
current++
nums[current] = nums[i]
}
}
return current + 1
}