力扣-存在重复的元素 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

后续

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


相关文章
|
4月前
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
51 1
|
4月前
【LeetCode 27】347.前k个高频元素
【LeetCode 27】347.前k个高频元素
52 0
|
4月前
【LeetCode 06】203.移除链表元素
【LeetCode 06】203.移除链表元素
41 0
|
4月前
【LeetCode-每日一题】移除元素
【LeetCode-每日一题】移除元素
40 0
|
6月前
|
存储 算法
LeetCode第83题删除排序链表中的重复元素
文章介绍了LeetCode第83题"删除排序链表中的重复元素"的解法,使用双指针技术在原链表上原地删除重复元素,提供了一种时间和空间效率都较高的解决方案。
LeetCode第83题删除排序链表中的重复元素
|
6月前
|
算法 索引
LeetCode第34题在排序数组中查找元素的第一个和最后一个位置
这篇文章介绍了LeetCode第34题"在排序数组中查找元素的第一个和最后一个位置"的解题方法,通过使用双指针法从数组两端向中间同时查找目标值,有效地找到了目标值的首次和最后一次出现的索引位置。
LeetCode第34题在排序数组中查找元素的第一个和最后一个位置
|
6月前
|
Python
【Leetcode刷题Python】剑指 Offer II 082. 含有重复元素集合的组合
解决LeetCode平台《剑指 Offer II 082. 含有重复元素集合的组合》题目的Python代码实现,通过深度优先搜索算法找出所有和为特定目标值的数字组合,并在搜索过程中通过排序和跳过重复元素来避免解集中出现重复组合。
53 2
|
6月前
|
算法
LeetCode第27题移除元素
这篇文章介绍了LeetCode第27题"移除元素"的解题方法,通过使用双指针技巧,有效移除数组中特定值的元素并返回新数组的长度。
|
6月前
|
算法 索引 Python
【Leetcode刷题Python】34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)
解决LeetCode "在排序数组中查找元素的第一个和最后一个位置" 问题的方法。第一种方法是使用两次二分查找,首先找到目标值的最左边界,然后找到最右边界。第二种方法是利用Python的list.index()方法,先正序找到起始位置,再逆序找到结束位置,并给出了两种方法的Python实现代码。
81 0
|
6月前
|
Python
【Leetcode刷题Python】203.移除链表元素
文章提供了三种删除链表中特定值节点的方法:迭代法、虚拟节点迭代删除法和递归法,并给出了相应的Python实现代码。
39 0