C語言?詳解如何刪除有序數(shù)組中的重復(fù)項(xiàng)
刪除有序數(shù)組中的重復(fù)項(xiàng)Ⅰ


a.思路
?定義變量 int dest=0,cur=1,nums[cur]與nums[dest]逐一比較。
?nums[cur]!=nums[dest],將nums[cur]放入dest下一個位置,更新dest。
?nums[cur]!=nums[dest],cur移動。
?cur==numsSize,結(jié)束。返回dest+1。
b.圖解

c.代碼
int removeDuplicates(int* nums, int numsSize)
{
if(numsSize==0)
{
return 0;
}
int dest=0;
int cur=1;
nums[dest]=nums[0];
//從cur==1 cur<numsSize
while(cur<numsSize)
{
if(nums[cur]!=nums[dest])
{
nums[++dest]=nums[cur++];
}
else
{
cur++;
}
}
return dest+1;
}
d.思考
?如果給你一個無序的數(shù)組,去除重復(fù)的元素,該如何設(shè)計(jì)程序?
刪除有序數(shù)組中的重復(fù)項(xiàng)Ⅱ


a.思路
?定義變量 int dest=0,cur=1,flag=1(表示0到dest,nums[dest]只出現(xiàn)過一次)。
?比較nums[cur]與nums[dest]。
?nums[cur]!=nums[dest],將nums[cur]放入dest下一個位置,++dest,更新flag(flag=1)。
?nums[cur]==nums[dest],如果dest所對應(yīng)的flag為1,可將nums[cur]放入dest下一個位置,++dest, ++flag。如果dest所對應(yīng)的flag為2,只移動cur.。
b.圖解

c.代碼
int removeDuplicates(int* nums, int numsSize)
{
int dest=0;
int cur=1;
int flag=1;
nums[dest]=nums[0];
//從cur==1到cur<numsSize
while(cur<numsSize)
{
if(nums[cur]!=nums[dest])
{
nums[++dest]=nums[cur++];
flag=1;
}
else
{
if(flag==1)
{
nums[++dest]=nums[cur++];
++flag;
}
else
{
cur++;
}
}
}
return dest+1;
}
d.思考
?如果給定一個有序數(shù)組,刪除重復(fù)出現(xiàn)的元素,使每個元素最多出現(xiàn)k次 ,返回刪除后數(shù)組的新長度,該如何設(shè)計(jì)程序?(k為常數(shù))
今天的算法題就分享到這里了,博主也會在后期更新更加優(yōu)質(zhì)的博文,如果對你有幫助的話,可以給個關(guān)注,順便給個贊。
到此這篇關(guān)于C語言 詳解如何刪除有序數(shù)組中的重復(fù)項(xiàng)的文章就介紹到這了,更多相關(guān)C語言 有序數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言使用結(jié)構(gòu)體實(shí)現(xiàn)簡單通訊錄
這篇文章主要為大家詳細(xì)介紹了C語言使用結(jié)構(gòu)體實(shí)現(xiàn)簡單通訊錄,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02
C++用指針變量作為函數(shù)的參數(shù)接受數(shù)組的值的問題詳細(xì)總結(jié)
以下是對C++中用指針變量作為函數(shù)的參數(shù)接受數(shù)組的值的問題進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-10-10
C語言中字符串與各數(shù)值類型之間的轉(zhuǎn)換方法
這篇文章主要介紹了C語言中字符串與各數(shù)值類型之間的轉(zhuǎn)換方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Matlab制作視頻并轉(zhuǎn)換成gif動態(tài)圖的兩種方法
這篇文章主要介紹了Matlab制作視頻并轉(zhuǎn)換成gif動態(tài)圖的兩種方法,第一種方法使用movie(f)直接取生成AVI視頻文件,相對來說比較簡單,需要的朋友可以參考下2018-08-08
C語言 風(fēng)靡一時的黃金礦工游戲?qū)崿F(xiàn)流程詳解
《黃金礦工》是一款非常經(jīng)典的游戲。在游戲中,玩家通過不斷挖礦,獲取金子,最終能夠闖入下一關(guān)。在這個過程中,會不斷有巖石、煙霧、老鼠來搗亂,甚至還會出現(xiàn)扛著炸藥包的小老鼠,玩家必須戰(zhàn)勝它們,才能進(jìn)入更深的礦坑2021-11-11

