文章目录
移除元素
图解:
代码如下:
int removeElement(int* nums, int numsSize, int val){
int src=0;
int dst=0;
while(src<numsSize)
{
if(nums[src]==val) //当src处的位置为val时,src向前移动一步
{
src++;
}
else //当src处的位置不为val时,将src处的值赋给dst处,且src与dst均向前移动一步
{
nums[dst]=nums[src];
src++;
dst++;
}
}
return dst;
}
删除有序数组中的重复项
解题思路
要删除数组中的重复项,比较优的解决方法就是设置两个指针,通过指针的移动和赋值来解决问题。
第一步:定义两个指针的变化量src与dst ,首先判断src与dst所指向的内容是否相同,若相同,src向前移动一步,dst不动。
第二步:在src向前移动的过程中,若src处所指向的内容与dst处的内容不同,则首先将src向前移动一步,在将src处所指向的内容赋给src处的内容。
第三步:重复第一步和第二步的操作,直至当src指向数组末。
图解如下:
代码如下:
int removeDuplicates(int* nums, int numsSize){
if(numsSize==0)
return 0;
int src=0;
int dst=0;
while(src<numsSize)
{
if(nums[dst]==nums[src])
{
src++;
}
else
{
dst++;
nums[dst]=nums[src];
src++;
}
}
return dst+1;
}