当前位置: 面试刷题>> 去除重复元素 (经典算法题500道)


题目描述补充

题目:去除数组中的重复元素

给定一个整数数组,请编写一个函数来移除数组中重复的元素,使得每个元素只出现一次,并且返回移除重复元素后的新数组长度。不要使用额外的数组空间,你必须在原地修改输入数组,并在使用O(1)额外空间的条件下完成。

示例 1:

输入: [1,1,2]
输出: 2, 数组变为 [1,2]

示例 2:

输入: [0,0,1,1,1,2,2,3,3,4]
输出: 5, 数组变为 [0,1,2,3,4]

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];
$result = removeDuplicates($nums);
echo "新数组长度为: " . $result . ", 数组为: ";
print_r($nums);

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]
result = removeDuplicates(nums)
print(f"新数组长度为: {result}, 数组为: {nums[:result]}")

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 result = removeDuplicates(nums);
console.log(`新数组长度为: ${result}, 数组为: ${nums.slice(0, result)}`);

码小课网站中有更多关于算法和数据结构的相关内容,包括面试题解析、代码实现和优化技巧等,欢迎大家学习交流。

推荐面试题