1.题目描述
2.思路
由于数组的元素顺组可以改变,利用“双指针”,分别从首和尾开始,首指针指向待替换的元素,尾指针指向不同于待删除的元素,进行替换
3.算法步骤
(1)初始化,指针s指向首元素,指针q指向尾元素
(2)指针s指向待删除元素,q指向不同于待删除的元素
(3)如果找到,则进行替换 arr[s] = arr[q],之后指针s向后移动,指针q向前移动
(4)重复(2)、(3),直到s>q
4.复杂度
时间复杂度:O(n)
空间复杂度:O(1)
5.CODE
int removeElement(int* nums, int numsSize, int val)
{
int s = 0,q = numsSize - 1;
while(s <= q)
{
//s从头开始,指向待删除元素的下标
if((nums[s] != val))
{
s++;