目录
- 1. 思路(图解)
- 2. 代码
题目链接:leetcode 27. 移除元素
题目描述:
需要注意的是,返回的是新数组长度,但是输出的是数组元素。
1. 思路(图解)
思路一:空间换时间(不满足题目要求),创建一个数组,不等于val的值放入这个数组;
思路二:快慢指针
- dst和src对应下标,初始为0;
- nums[src]等于val:src自增,目的是找到不等于val的值;
- nums[src]不等于val:将nums[dst]赋值nums[src],dst和src自增;
- 返回dst就是新数组的长度,同时0-dst间没有等于val的值。
2. 代码
int removeElement(int* nums, int numsSize, int val) {
int dst = 0;
int src = 0;
while (src < numsSize) {
if (nums[src] != val) {
nums[dst] = nums[src];
++dst;
++src;
}
else {
++src;
}
}
return dst;
}