LeetCode面试题03. 数组中重复的数字
生活随笔
收集整理的這篇文章主要介紹了
LeetCode面试题03. 数组中重复的数字
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
方法一:遍歷數(shù)組
由于只需要找出數(shù)組中任意一個重復的數(shù)字,因此遍歷數(shù)組,遇到重復的數(shù)字即返回。為了判斷一個數(shù)字是否重復遇到,使用集合存儲已經(jīng)遇到的數(shù)字,如果遇到的一個數(shù)字已經(jīng)在集合中,則當前的數(shù)字是重復數(shù)字。
方法二:類似交換排序
由于題目規(guī)定所有數(shù)字都在 0~n-1 的范圍內,因此如果沒有任何重復數(shù)字,數(shù)組從小到大排列后是下標為i的位置對應數(shù)字i。
可以判斷i與數(shù)組中下標i位置的數(shù)字m是否相等,如果不相等,將下標i位置的數(shù)字m交換到數(shù)組中下標為m的位置。思想其實就是不斷的遍歷將無序的數(shù)組逐漸變成有序,如果中間遇到下標位置下標i位置的數(shù)字m與下標為m的位置數(shù)字相等,則得到最終結果。
時間復雜度: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
- 下一篇: 如何用最简单的方式解释依赖注入?依赖注入