题目描述:
代码实现:
1、指针实现
- int removeElement(int* nums, int numsSize, int val) {
- int* dst = nums, * src = nums;
- int n1 = 0,n2=0;
- while (n1+n2 < numsSize)
- {
- if (*src != val)
- {
- *dst = *src;
- dst++;
- src++;
- n1++;//表示src走的步数
- }
- else
- {
- src++;
- n2++;//表示src走的步数,也是需要移除(==val)的元素个数
- }
- }
- return numsSize - n2;
- }
2、数组下标访问实现
- int removeElement(int* nums, int numsSize, int val) {
- int dst = 0, src = 0;
- int n = 0;
- while (src < numsSize)
- {
- if (nums[src] != val)
- {
- nums[dst] = nums[src];
- dst++;
- src++;
- }
- else
- {
- src++;
- n++;
- }
- }
- return numsSize - n;
- }