zoukankan      html  css  js  c++  java
  • 算法-存在重复元素

    给定一个整数数组,判断是否存在重复元素。

    如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。

    示例 1:

    输入: [1,2,3,1]
    输出: true
    示例 2:

    输入: [1,2,3,4]
    输出: false

    方法1

    新建一个数组,在放数之前判断新数组中是否存在元素,从而判断原数组中是否有重复元素

    /**
     * @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

    先排序,近似大小锝挨在一起,再对比相邻锝两个数是都相等,从而判断是否重复

    复杂度分析

    时间复杂度:O(Nlog 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
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  • 相关阅读:
    [LeetCode] 461. Hamming Distance
    [LeetCode] 1503. Last Moment Before All Ants Fall Out of a Plank
    [LeetCode] 271. Encode and Decode Strings
    [LeetCode] 38. Count and Say
    SVN安装及基本操作(图文教程)(超级详细)
    解决ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (10061)问题
    雪花算法的原理和实现Java
    XML、XML约束、XML解析、常用的xml解析器(DOM4J)、XPATH
    XML解析之SAX方式解析xml文件
    Javascript面试题
  • 原文地址:https://www.cnblogs.com/GoTing/p/15125342.html
Copyright © 2011-2022 走看看