关关的刷题日记05 —— Leetcode 217. Contains Duplicate 方法1和方法2
时间:2022-05-07
本文章向大家介绍关关的刷题日记05 —— Leetcode 217. Contains Duplicate 方法1和方法2,主要内容包括题目、方法1、方法2、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
题目
Leetcode 217. Contains Duplicate
Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.
题目的意思是,判断一个数组中是否有重复的数,有的话返回true,否则返回false。
方法1
方法1:对数组进行排序,遍历数组,如果出现前后元素相等,说明有重复数。
时间复杂度o(nlogn),不需要开辟额外空间。
代码如下:
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
sort(nums.begin(), nums.end());
for(int i=1; i<nums.size(); i++)
{
if(nums[i]==nums[i-1])
return true;
}
return false;
}
};
注意代码的5-7行不要写成下面这种形式,理由是:nums.size()是个unsigned int型,当数组大小为0的时候,nums.size()-1并不会得到-1,而是一个非常大的正数,这个时候数组会越界,会runtime error。
for(int i=0; i<nums.size()-1; i++)
{
if(nums[i]==nums[i+1])
优雅的代码:既然用了sort,不如直接用unique:
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
sort(nums.begin(), nums.end());
return unique(nums.begin(), nums.end())!=nums.end();
}
};
方法2
方法2:用哈希表,对数组中的每个元素先去哈希表中查找,如果找到了就直接返回true,找不到的话就把这个元素插入到表中,时间复杂度o(n).
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_set<int>t;
for(int x: nums)
{
if(t.find(x)!=t.end())
return true;
else
t.insert(x);
}
return false;
}
};
现在的努力是为了将来更有能力选择自己的人生,加油!
以上就是关关关于这道题的总结经验,希望大家能够理解,有什么问题可以在我们的专知公众号平台上交流或者加我们的QQ专知-人工智能交流群 426491390,也可以加入专知——Leetcode刷题交流群(请先加微信小助手weixinhao: Rancho_Fang)。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- [周末往期回顾]使用Django获取Linux性能数据并存放在redis中
- [周末往期回顾]使用Python将Oracle已使用过索引存入MySQL中
- [周末往期回顾]DB_CREATE_FILE_DEST,DB_CREATE_ONLINE_LOG_DEST_n
- 【DB宝18】在Docker中安装使用MySQL高可用之MGR
- [周末往期回顾]redis的介绍及安装
- [Oracle 日常管理]使用BBED定位数据位置
- [Oracle 日常管理]表的相关操作
- JsonPath实践(二)
- C# 使用OpenCV在一张图片里寻找人脸
- 【DB笔试面试858】在Oracle中,ipcs和ipcrm命令的作用有哪些?
- Qt音视频开发13-mpv录像存储
- Oracle参数解析(spfile)
- ROS2机器人笔记20-08-18
- C sharp实例:华盾武器门数据接收和解析
- JsonPath实践(三)