zoukankan      html  css  js  c++  java
  • 存在重复

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

    如果任何值在数组中出现至少两次,函数返回 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 ; };

     方法三 

    思路
      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 }
  • 相关阅读:
    Repeater 中 OnItemCommand 用法
    正则匹配 替换..追加..
    Jquery validform
    MSSQL执行大脚本文件时,提示“内存不足”的解决办法
    获取表达式属性名称
    动态查询框架
    领域事件相关文章
    在微服务中使用领域事件(转载)
    Java核心编程快速学习(转载)
    面向对象编程思想(前传)--你必须知道的javascript(转载)
  • 原文地址:https://www.cnblogs.com/jjq-exchange/p/11118795.html
Copyright © 2011-2022 走看看