力扣-存在重复的元素 easy

简介: 力扣-存在重复的元素 easy

前言

数据结构与算法属于开发人员的内功,不管前端技术怎么变,框架怎么更新,版本怎么迭代,它终究是不变的内容。 始终记得在参加字节青训营的时候,月影老师说过的一句话,不要问前端学不学算法。计算机学科的每一位都有必要了解算法,有写出高质量代码的潜意识

一、问题描述

给你一个整数数组 nums 。如果任一值在数组中出现至少两次,返回 true ;如果数组中每个元素互不相同,返回 false 。 示例 1:

输入:nums = [1,2,3,1]
输出:true

示例 2:

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

示例 3:

输入:nums = [1,1,1,3,3,4,3,2,4,2]
输出:true

提示:

  • 1 <= nums.length <= 105
  • 109 <= nums[i] <= 109

二、思路讲解

2.1 排序法  O(Nlog(N))

讲nums排序之后,从第一个元素以后的元素进行迭代,一旦发现该元素和前一个元素相等的话,就返回true,迭代完依旧未找到返回false

var containsDuplicate = function(nums) {
    nums.sort((a,b)=>a-b)
    for(let i = 1; i< nums.length ;i++){
        if(nums[i] === nums[i-1]){
            return true
        }
    }
    return false
};

2.2 哈希表记录  O(N) 空间复杂度O(N)

var containsDuplicate = function(nums) {
    let map =  new Map()
    for(let i = 0; i < nums.length; i++){
        console.log(map.has(nums[i]))
        if(map.has(nums[i])){
            return true
        }
        map.set(nums[i],true)
    }
    return false
};

2.3 every方法

every 方法接受一个函数,函数的返回值都为true,则every返回true,否则返回fasle

var containsDuplicate = function(nums) {
    return !nums.every((num,index,arr)=>arr.indexOf(num)===index)
};

测试结果

虽然最后一种方法只需要一行代码,但是时间复杂度稍微高了点

image.png

后续

好了,本篇 力扣-存在重复的元素到这里就结束了,我是邵小白,一个在前端领域摸爬滚打的大三学生,欢迎👍评论。


相关文章
|
20天前
【移除链表元素】LeetCode第203题讲解
【移除链表元素】LeetCode第203题讲解
|
6天前
题目----力扣--移除链表元素
题目----力扣--移除链表元素
13 1
|
8天前
|
存储 算法 索引
【力扣刷题】只出现一次的数字、多数元素、环形链表 II、两数相加
【力扣刷题】只出现一次的数字、多数元素、环形链表 II、两数相加
19 1
|
12天前
|
算法 C语言
Leetcode_203.移除链表元素—C语言
Leetcode_203.移除链表元素—C语言
|
13天前
|
人工智能
力扣100114. 元素和最小的山形三元组 II(中等)
力扣100114. 元素和最小的山形三元组 II(中等)
|
18天前
|
存储
力扣 合并两个有序数列||移除元素
力扣 合并两个有序数列||移除元素
18 0
|
20天前
leetcode代码记录(下一个更大元素 II
leetcode代码记录(下一个更大元素 II
11 0
|
20天前
|
索引
leetcode代码记录(下一个更大元素 I
leetcode代码记录(下一个更大元素 I
9 0
|
20天前
leetcode代码记录(移除链表元素
leetcode代码记录(移除链表元素
12 0
|
20天前
leetcode代码记录(移除元素
leetcode代码记录(移除元素
12 0