刪除乙個陣列或字串中的重複元素並對其進行排序的問題大概大家都遇到過。
之前我的思路:
1.先將陣列裡所有的元素排序。
2.用將陣列元素向前移覆蓋掉重複元素的方法刪除重複元素。
#include
#include
int num;
void
rank
(char
*str,
int num)
}voidde(
char str,
int*num)}}
intmain()
}rank
(str,num);de
(str,
&num)
;for
(i=0
;i)printf
("%c"
,str[i]);
return0;
}
天哪,這種方法真的要寫太多了吧!
後來發現有另一種解法:製表法。(有可能在其它地方不叫這種方法)。
這種方法跟上面一種方法相比的優缺點是:
優點:**看起來簡潔了許多。
缺點:與上面的方法相比占用了更多的記憶體空間。
**如下:
#include
intmain()
;//此處的b陣列必須要進行初始化。乙個陣列申明後,如果沒有賦值,那麼只是分配了記憶體空間,沒有具體的值,也可以說是空,其組成是「\0」也就是null,無法在實際中使用。
int i;
gets
(a);
for(i=
0;a[i]
;i++
) b[a[i]]=
1;//標記b陣列的陣列下標
for(i=
0;i<
256;i++)if
(b[i]==1
)printf
("%c"
,i);
//輸出被標記的陣列下標
putchar
('\0');
//加上乙個字串的結束標誌
return0;
}
排序並刪除重複元素
usr bin python coding utf 8 def select sort lst left,right 0,len lst while left right p,i left,left 1 while i right if lst i lst p 覆蓋重複元素,陣列長度減一,即右邊界左...
刪除排序鍊錶中重複元素
示例 1 輸入 1 2 3 3 4 4 5 輸出 1 2 5 示例 2 輸入 1 1 1 2 3 輸出 2 3 照例使用三個指標來 struct listnode deleteduplicates struct listnode head else 沒有重複的就正常移動 示例 1 輸入 1 1 2 ...
已排序陣列刪除重複元素
刪除排序陣列中的重複項 思路可以轉變為 前提陣列有序 可以理解為相鄰元素間要不相同,要不不同 要求刪除重複元素,實際上就是將不重複的元素移到陣列的左側。假如乙個有序陣列為 1,1,1,2,2,3,4,5 使用雙指標法 快慢指標 分別為p和q 在迴圈遍歷過程中,第一輪可以將陣列表示為 p在1的位置上q...