当前位置: 面试刷题>> 删除排序数组中的重复数字 (经典算法题500道)
### 题目描述
给定一个排序后的数组,你需要原地删除重复出现的元素,使得每个元素只出现一次,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。
**示例 1**:
```
给定数组 nums = [1,1,2],
函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。
你不需要考虑数组中超出新长度后面的元素。
```
**示例 2**:
```
给定数组 nums = [0,0,1,1,1,2,2,3,3,4],
函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。
你不需要考虑数组中超出新长度后面的元素。
```
### PHP 代码示例
```php
function removeDuplicates(&$nums) {
if (empty($nums)) return 0;
$length = count($nums);
$index = 1;
for ($i = 1; $i < $length; $i++) {
if ($nums[$i] != $nums[$i - 1]) {
$nums[$index] = $nums[$i];
$index++;
}
}
return $index;
}
// 示例
$nums = [1, 1, 2];
$newLength = removeDuplicates($nums);
echo "New length: " . $newLength . PHP_EOL;
print_r($nums);
```
### Python 代码示例
```python
def removeDuplicates(nums):
if not nums:
return 0
index = 1
for i in range(1, len(nums)):
if nums[i] != nums[i - 1]:
nums[index] = nums[i]
index += 1
return index
# 示例
nums = [1, 1, 2]
new_length = removeDuplicates(nums)
print("New length:", new_length)
print(nums[:new_length])
```
### JavaScript 代码示例
```javascript
function removeDuplicates(nums) {
if (nums.length === 0) return 0;
let index = 1;
for (let i = 1; i < nums.length; i++) {
if (nums[i] !== nums[i - 1]) {
nums[index] = nums[i];
index++;
}
}
return index;
}
// 示例
let nums = [1, 1, 2];
let newLength = removeDuplicates(nums);
console.log("New length:", newLength);
console.log(nums.slice(0, newLength));
```
### 码小课
码小课网站中有更多关于算法和数据结构的内容分享给大家学习,涵盖了从基础到进阶的各类编程知识和技巧,帮助大家提升编程能力,更好地应对面试和工作中的挑战。