劍指offer 第03題 陣列中重複的數字

2021-10-22 21:34:18 字數 703 閱讀 9260

找出陣列中重複的數字。

在乙個長度為 n 的陣列 nums 裡的所有數字都在 0~n-1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。

示例 1:

輸入:

[2, 3, 1, 0, 2, 5, 3]

輸出:2 或 3

限制:

2 <= n <= 100000
第一種解法:使用hashset,因為hashset中不含有重複數字。

class

solution

}return i;

}}

第二種解法:原地置換

我們發現長度為n的陣列中所有的數字都在0-n-1的範圍內,所以當對陣列進行排序後,當陣列中不出現重複數字時,i位置的數字應該為i。

當掃瞄到下標為i的數字時,首先比較該數字(m)是不是等於i,如果是,則繼續掃瞄下乙個數字。如果不是,則和比較下標為m的數字進行比較,若相同則返回該數字m,不相同則交換。然後繼續比較下乙個。

class

solution

}return-1

;}}

劍指Offer刷題 陣列中重複的數字(03)

找出陣列中重複的數字。在乙個長度為 n 的陣列 nums 裡的所有數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。示例 1 輸入 2,3,1,0,2,5,3 輸出 2 或 3 限制 2 n 100000 排...

劍指offer 第15 16題

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。coding utf 8 classsolution defnumberof1 self,n write code here count 0 ifn 0 n n 0xffffffff whilen count 1 n n 1 n re...

劍指Offer 第1題

問題 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。暴力法 分析 直接遍歷一遍陣列,即可判斷目標target是否存在。複雜度分析 時間複雜度 o n 2 因...