LeetCode面试题03. 数组中重复的数字
生活随笔
收集整理的這篇文章主要介紹了
LeetCode面试题03. 数组中重复的数字
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
方法一:遍歷數組
由于只需要找出數組中任意一個重復的數字,因此遍歷數組,遇到重復的數字即返回。為了判斷一個數字是否重復遇到,使用集合存儲已經遇到的數字,如果遇到的一個數字已經在集合中,則當前的數字是重復數字。
方法二:類似交換排序
由于題目規定所有數字都在 0~n-1 的范圍內,因此如果沒有任何重復數字,數組從小到大排列后是下標為i的位置對應數字i。
可以判斷i與數組中下標i位置的數字m是否相等,如果不相等,將下標i位置的數字m交換到數組中下標為m的位置。思想其實就是不斷的遍歷將無序的數組逐漸變成有序,如果中間遇到下標位置下標i位置的數字m與下標為m的位置數字相等,則得到最終結果。
時間復雜度:O(nlogn) (最壞情況下的排序)
空間復雜度:O(1)
public class Solution {public int FindRepeatNumber(int[] nums) {for(int i = 0; i < nums.Length; i++){if(i != nums[i]){if(nums[nums[i]] != nums[i])nums[nums[i]] = nums[i];elsereturn nums[i];}}return -1;} }?
?
?
?
總結
以上是生活随笔為你收集整理的LeetCode面试题03. 数组中重复的数字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Message Queuing(MSMQ
- 下一篇: 双十一兴业银行信用卡疯狂提额!刷多少提多