找出陣列中重複的數字。
在乙個長度為 n 的陣列 nums 裡的所有數字都在 0~n-1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。
示例 1:
輸入:[2, 3, 1, 0, 2, 5, 3]
輸出:2 或 3
限制:
2 <= n <= 100000
方法一:遍歷陣列
由於只需要找出陣列中任意乙個重複的數字,因此遍歷陣列,遇到重複的數字即返回。為了判斷乙個數字是否重複遇到,使用集合儲存已經遇到的數字,如果遇到的乙個數字已經在集合中,則當前的數字是重複數字。
初始化集合為空集合,重複的數字 repeat = -1遍歷陣列中的每個元素:
將該元素加入集合中,判斷是否新增成功
如果新增失敗,說明該元素已經在集合中,因此該元素是重複元素,將該元素的值賦給 repeat,並結束遍歷
返回 repeat
class
solution
}return ans;
}}
方法二遍歷的同時,可以將值為 i 的元素調整到第 i 個位置上進行求解,如果第 i 位置上已經有乙個值為 i 的元素,就可以知道 i 值重複。
class
solution
swap
(nums,i,nums[i]);
}}return ans;
}public
void
swap
(int
nums,
int a,
int b)
}
劍指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 首...