Leetcode-面試題3--找出數組中的重複數字

找出數組中的重複數字

題目描述

在一個長度爲 n 的數組 nums 裏的所有數字都在 0~n-1 的範圍內。數組中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出數組中任意一個重複的數字。

  • 限制:2 <= n <= 100000

示例

輸入:
[2, 3, 1, 0, 2, 5, 3]
輸出:23 

解題思路

暴力破解

額,這個方法最容易想到吧!!!特別是像我這種菜鳥!!!
這方法沒啥好說的,雙重循環查找就好了,讓我難以置信的是居然過了!!!!
時間複雜度O(n²)

var findRepeatNumber = function(nums) {
    for (let i=0; i<nums.length; i++) {
        for (let j=i+1; j<nums.length; j++) {
            if (nums[i] === nums[j]) {
                return nums[i]
            }
        }
    }
};
// 時間複雜度O(n²)

哈希

額,這也沒啥好說的,Map是ES6中的語法,不明白的可以看看阮大神的教程
時間複雜度o(n)

var findRepeatNumber = function(nums) {
   let map = new Map()
   for (let i=0; i<nums.length; i++) {
       if (map.has(nums[i])) {
          return nums[i]  
       } else {
           map.set(nums[i])
       }
   }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章