不知不觉就快9点了,也不知道每天在忙什么,总感觉时间不够又不知道时间去哪儿了。有时候一味做着低级趣味的活,想改变,却发现无能无力。每当离开电脑的时候已是夜深人静,闭上双眼,只想深深地睡去……突然,猛的惊醒,今天的题还没刷,也不知道为了什么,但愿以后的每天都有这个执念。
题目描述
| 分类 | 困难度 | 👍 | 👎 |
|---|---|---|---|
| 算法 | 简单 (55.13%) | 368 | - |
公司
airbnb | palantir | yahoo给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。
示例 1:
输入: [1,2,3,1]
输出: true
示例 2:
输入: [1,2,3,4]
输出: false
示例3:
输入: [1,1,1,3,3,4,3,2,4,2]
输出: true
思路分析
首先想到的是先排序,再比较前后相邻元素,如果存在相等,就返回 true ,否则就返回 false。当然这里存在一个问题,用的 sort 导致原数据改变。
AC 代码
暴力解法
/*
* @lc app=leetcode.cn id=217 lang=javascript
*
* [217] 存在重复元素
*/
// @lc code=start
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function (nums) {
let arr = nums.sort();
for (let i = 0; i < arr.length; i++) {
if (arr[i] === arr[i + 1]) {
return true;
}
}
return false;
};
// @lc code=end
待补充
总结
这可能也是全网最 low 的解法,毕竟改变了原数据。看了前端大佬的文章,借助JavaScript 语言特性有很多解法,比如 indexOf、Map 、Set等,无需改变原数据。不过,我到现在还没搞懂复杂度怎么计算,差距不是一般大啊!
本文正在参与「掘金 2021 春招闯关活动」, 点击查看活动详情