存在重複

給定一個整數數組,判斷是否存在重複元素。es6

若是任何值在數組中出現至少兩次,函數返回 true。若是數組中每一個元素都不相同,則返回 false。數組

 

  1.方法一(暴力解法)函數

這個解法是第一時間腦海中反應出來的思路十分簡單暴力
1.就是每一次都與後N個數對比 不存在就接着下一個和後N個對比
2.若是遇到相同則返回 true 反之就false

/*
* * @param {number[]} nums * @return {boolean} */ var containsDuplicate = function(nums) { for(var i=0;i<nums.length;i++){ for(var j=i+1;j<nums.length;j++){ if(nums[i] === nums[j]) return true } } return false; };

方法二( 該方法在寫完方法一後,想着會有更優解,同時想到es6的set 去重後 利用該方法判斷)
1利用es6 的set去重 再使用 Array.form方法將 set以後的對象轉化爲數組
 2.將轉化後的的數組和原數組比較 長度相等則返回 false 反之裏面必有重複 返回 true

/*
* * @param {number[]} nums * @return {boolean} */ var containsDuplicate = function(nums) { var news = Array.from(new Set(nums)); return news.length !== nums.length ? true : false ; };

 方法三 spa

思路
  1. 利用一個對象做爲臨時存儲,同時利用對象KEY存在會返回對應值原理,查找是否重複
  2. 對傳入數組循環,若不存在則,將該索引下數組內容做爲對象KEY並賦值爲true,若再有這個數遇到則可利用其作相應判斷
3. 若全程未遇到則返回false

/*
* * @param {number[]} nums * @return {boolean} */ var containsDuplicate = function(nums) { let len = nums.length, obj = {} for (let i = 0; i < len; i++) { if (obj[nums[i]]) { return true } obj[nums[i]] = true } return false }
相關文章
相關標籤/搜索