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
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  • 相关阅读:
    java Io 流类详解
    java 集合hashmap hashset arraylist 详解以及常见面试题
    java 基本类型以及笔试常考点
    Java 面向对象思想简介(入门篇)
    SpringMVC开发过程中的中文乱码问题
    菜鸟级springmvc+spring+mybatis整合开发用户登录功能(下)
    菜鸟级springmvc+spring+mybatis整合开发用户登录功能(上)
    Applet再学习
    Applet初次使用
    ZLYD团队第5周项目总结
  • 原文地址:https://www.cnblogs.com/GoTing/p/15125342.html
Copyright © 2011-2022 走看看