31 劍指Offer之陣列中重複的數字

2021-10-08 03:15:07 字數 381 閱讀 9514

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

思路採用非暴力查詢和不消耗額外空間的演算法:陣列重排。把原陣列重新排列為乙個元素和對應下標值相同的陣列。該演算法看起來是兩層迴圈,但是每個數字最多進行兩次交換就會找到屬於自己的位置,因為總的時間複雜度還是o(n),不需要額外記憶體。

以為例:

public

class

duplicate_31

else}}

return

false;}

}

劍指offer 3 1陣列中重複的數字

通過一次排序,只要從頭到尾掃瞄陣列中的元素,找到相鄰不相等的元素即可。public static void main string args int find 0 arrays.sort numbers for int i 0 i numbers.length 1 i system.out.prin...

劍指offer之陣列中重複的數

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

劍指offer之 陣列中重複的數字

在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。暴力解法,遍歷,發現重複即返回true和重複數字 hash,由於數字...