找出陣列中重複的數字。第一種解法:使用hashset,因為hashset中不含有重複數字。在乙個長度為 n 的陣列 nums 裡的所有數字都在 0~n-1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。
示例 1:
限制:輸入:
[2, 3, 1, 0, 2, 5, 3]
輸出:2 或 3
2 <= n <= 100000
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 因...