題目描述
找出陣列中重複的數字。
在乙個長度為 n 的陣列 nums 裡的所有數字都在 0~n-1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字
解題思路
1、需要注意的點:陣列 nums 裡的所有數字都在 0~n-1 的範圍內
2、根據不同的時間複雜度和空間複雜度,這道題會有不同的解法。
(1)最簡單的辦法,先將陣列排好序,再從頭到尾遍歷陣列。
(2)時間複雜度為o(n),空間複雜度為o(n),使用集合來解決這個問題,需要額外空間。
(3)時間複雜度為o(n), 空間複雜度為o(1),第三種解法主要根據題目規律來解決問題的。題目中提到陣列 nums 裡的所有數字都在 0~n-1 的範圍內
,可以理解為,如果這個陣列中沒有重複的數字,陣列排序後,數字i的索引值為i。
**1
class
solution
return-1;}}
**2class
solution
//將nums[i]這個數放到陣列的索引值為nums[i]這個地方
temp = nums[i]
; nums[i]
= nums[temp]
; nums[temp]
= temp;}}
return-1;}}
劍指offer03 陣列中重複的數字
在乙個長度為 n 的陣列 nums 裡的所有數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。示例 1 輸入 2,3,1,0,2,5,3 輸出 2 或 3限制 2 n 100000 首先拿到這道題最先想到的是...
劍指Offer03 陣列中重複的數字
劍指offer典型題整理 爭取做最好的題解 題目描述 在乙個長度為 n 的陣列 nums 裡的所有數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。示例 輸入 2,3,1,0,2,5,3 輸出 2 或 3 限...
劍指offer 03陣列中重複的數字
找出陣列中重複的數字。在乙個長度為 n 的陣列 nums 裡的所有數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。示例 1 輸入 2,3,1,0,2,5,3 輸出 2 或 3 限制 2 n 100000 首...