下面是我寫的問題描述和算法。有什麼需要改進這個算法嗎?在帶有邊界的整數數組中找到重複項
給定一個未知大小的整數數組,只包含0到30之間的數字,編寫一個函數返回一個包含所有重複項的整數數組。
int[] findDupes(int[] array) {
int[] found = new int[30];
int[] dupes = new int[30];
int dupesCount = 0;
for (int i = 0; i < array.length; i++) {
if (found[array[i]] <= 1) {
found[array[i]]++;
}else{
continue;
}
if(found[array[i]] > 1){
dupes[dupesCount++] = array[i];
if (dupesCount == 30)
break;
}
}
if (dupesCount == 0)
return new int[0];
return dupes;
}
上午假定運行此算法最好的情況下將n或30孰低 以及運行該算法最壞的情況是n,因爲我要掃描整個陣列,以查找重複。任何意見?
@illcar:可以有任何數量的事件。無論如何,如果發生多於一次,則它是重複的。根據我對原始帖子中問題的理解,我不需要檢查重複次數。 – 2010-08-08 16:46:30