摘要:程式題目:濾掉重複數字
有個朋友問的
題目是
程式要隨意輸入20個整數 假如都沒有重複那就印出這20個數
但假如有重複 則後來重複的數則都忽略掉
還有要以最小陣列解決
譬如4 5 6 5 2 5六個數只要印出4 5 6 2 陣列大小也從6變成4
這是他的想法
想法是從輸入整數的時候就判斷該整數有沒有跟之前的重複
沒有重複的話就變成陣列的元素
重複的話就省略 然後下一個整數輸入/* input the first value for originalArray[0]*/ printf("please input a number as a sequence of array:\n"); scanf("%d",&j); originalArray[0]=j;
/*input the remaining value for originalArray[1~] */ for(i=1; i<NUMBER; i++){ printf("please input a number as a sequence of array:\n"); scanf("%d",&j); for(k=i-1; k>=0; k--){ if(originalArray[k] == j){ originalArray[i]='\0';} else originalArray[i]=j; } }
這是我的想法:
1.直接使用hash來濾掉重複數字與轉成陣列
如果要優化的話就要針對整數及輸入數值個數作hash實作
2.使用二元樹可以減少時間複雜度(其實就是邊讀邊排序)