返回
算法技巧:熟练掌握 LeetCode 移除元素(No.27)
见解分享
2023-12-23 16:11:34
算法简介
题目: 给定一个整数数组 nums
和一个目标值 val
,请你移除所有等于 val
的元素,并返回移除后数组的新长度。
示例:
输入:nums = [3,2,2,3], val = 3
输出:2
解释:移除所有等于 3 的元素后,nums = [2,2]。
思考:
要有效地解决这个问题,我们需要考虑以下几点:
- 数组遍历: 我们需要遍历整个数组以查找等于
val
的元素。 - 元素移除: 一旦找到要移除的元素,我们需要将其从数组中删除。
- 数组长度调整: 删除元素后,我们需要相应地调整数组的长度。
实现:
Python:
def removeElement(nums, val):
i = 0
while i < len(nums):
if nums[i] == val:
nums.pop(i) # 移除元素
else:
i += 1 # 继续遍历
return len(nums)
Java:
public int removeElement(int[] nums, int val) {
int i = 0;
for (int j = 0; j < nums.length; j++) {
if (nums[j] != val) {
nums[i] = nums[j]; # 覆盖不等于 val 的元素
i++;
}
}
return i;
}
C++:
int removeElement(vector<int>& nums, int val) {
int i = 0;
for (int j = 0; j < nums.size(); j++) {
if (nums[j] != val) {
nums[i++] = nums[j];
}
}
return i;
}
总结
通过解决 LeetCode 上的第 27 号问题:“移除元素”,我们了解了如何有效地遍历和修改数组。我们还讨论了在实现中考虑的要点,例如数组遍历、元素移除和数组长度调整。希望这篇文章能帮助你加深对算法的理解,并在未来的编程挑战中取得成功。