給定一個整數數組,判斷是否存在重複元素。html
若是存在一值在數組中出現至少兩次,函數返回 true 。若是數組中每一個元素都不相同,則返回 false 。數組
示例 1:網絡
輸入: [1,2,3,1]
輸出: true
示例 2:函數
輸入: [1,2,3,4]
輸出: falsespa
方法1code
新建一個數組,在放數以前判斷新數組中是否存在元素,從而判斷原數組中是否有重複元素htm
/** * @param {number[]} nums * @return {boolean} */ var containsDuplicate = function(nums) { var arr=[]; for(var i=0;i<nums.length;i++){ if(arr.indexOf(nums[i])==-1){ arr.push(nums[i]) }else{ break; } } return !(arr.length==nums.length) };
方法2對象
先排序,近似大小鍀挨在一塊兒,再對比相鄰鍀兩個數是都相等,從而判斷是否重複blog
複雜度分析排序
時間複雜度:O(N\log N)O(NlogN),其中 NN 爲數組的長度。須要對數組進行排序。
空間複雜度:O(\log N)O(logN),其中 NN 爲數組的長度。注意咱們在這裏應當考慮遞歸調用棧的深度。
var containsDuplicate = function(nums) { var arr= nums.sort(); var flag=false for(var i=0;i<arr.length;i++){ if(arr[i]==arr[i+1]){ flag=true break; } } return flag };
方法3
利用對象的屬性不重複,將數組的每一項看成對象的屬性名,併爲屬性名賦值,當再次出現該屬性名,則return true;
var containsDuplicate = function(nums) { var obj={}; for(var i=0;i<nums.length;i++){ if(obj[nums[i]]==true){ return true; } obj[nums[i]]=true; } return false };
方法4
對於數組中每一個元素,咱們將它插入到哈希表中。若是插入一個元素時發現該元素已經存在於哈希表中,則說明存在重複的元素
複雜度分析
時間複雜度:O(N)O(N),其中 NN 爲數組的長度。
空間複雜度:O(N)O(N),其中 NN 爲數組的長度
var containsDuplicate = function(nums) { const set = new Set(); for (const x of nums) { if (set.has(x)) { return true; } set.add(x); } return false; };
來源:力扣(LeetCode)連接:https://leetcode-cn.com/problems/contains-duplicate著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。