文章目錄
- 移除元素
- 洗掉有序陣列中的重復項
移除元素

圖解:

代碼如下:
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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/310614.html
標籤:其他
