劍指offer 陣列中重複的數字

2021-09-07 01:27:11 字數 888 閱讀 4020

在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。 例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。

思路:這道題是做過的,但是時間久了,忘記了....

自己讀題也不仔細,沒注意到數字都在0-n-1範圍內....

首先,上最好的方法吧。o(n)時間+o(1)空間的

思路是:把陣列中的下標和數字對應起來,舉例,讓numbers[0]中的數字是0,讓numbers[1]中的數字是1....

如果說下標已經和數字對應了,又找到了相同的數字就是出現了重複。

由於每個數字只會歸位一次,所以是o(n)的演算法。

bool duplicate3(int numbers, int length, int*duplication)

else //把當前位儲存的數字放入正確的位置}}

return

false

; }

用hashtable的方法 時間o(n)空間o(n)

bool duplicate(int numbers, int length, int*duplication) 

else

}return

false

; }

排序的方法

static

int cmp(const

void *a, const

void *b)

bool duplicate2(int numbers, int length, int*duplication)

}return

false

; }

劍指offer 陣列中重複的數字

題目描述 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。class solution 考慮這種非法輸入 for i...

劍指offer 陣列中重複的數字

在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。分析 雖然也ac了,但是沒仔細看題,可以利用題目已有條件做到更簡單的...

劍指offer 陣列中重複的數字

題目描述 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。解析 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍...