leetcode 217 Contains Duplicate 数组中是否有重复的数字
来源:互联网 发布:sql注入日志检测与分析 编辑:程序博客网 时间:2024/05/20 11:50
Contains Duplicate Total Accepted: 26477 Total Submissions: 73478 My SubmissionsGiven 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.
我的解决方案:很显然不是最优的,记录每个插入的状态,看起来也不是很简洁,但是对于方案二的优势是在对于长数组时候,第一个有重复的数字就退出了
class Solution {public: bool containsDuplicate(vector<int>& nums) { set<int> result; set<int>::iterator itor ; for(int i = 0;i< nums.size();++i) { itor = result.find(nums[i]) ; if(itor != result.end()) { return true; } else { result.insert(nums[i]); } } return false; }};
非常简洁的解决方案,类似python 了,但是stl 中的set是基于平衡树的,而python中是hash树,所以python可能会高效一些
:
class Solution {public: bool containsDuplicate(vector<int>& nums) { return nums.size() > set<int>(nums.begin(), nums.end()).size(); }};
python 的版本:
class Solution: def containsDuplicate(self, nums): return len(nums) > len(set(nums))
c++ 的hash版本:同类的hash code是相同的,这是一个非常重要的编程思想
class Solution {public: bool containsDuplicate(vector<int>& nums) { unordered_set<int> hashset; for (int i = 0; i < nums.size(); ++i) { if (hashset.find(nums[i]) != hashset.end()) { return true; } else { hashset.insert(nums[i]); } } return false; }};
c++排序版本:
+2 votes942 viewsclass Solution {public: bool containsDuplicate(vector<int>& nums) { int size=nums.size(); sort(nums.begin(),nums.end()); nums.erase(unique(nums.begin(),nums.end()),nums.end()); return (size!=nums.size()); }};+4 votesYour running time is 28ms, if not use unique, it will be 24ms:class Solution {public: bool containsDuplicate(std::vector<int>& nums) { std::sort(nums.begin(), nums.end()); for (int i = 1; i < nums.size(); ++i) if (nums[i] == nums[i - 1]) return true; return false; }};
1 0
- leetcode 217 Contains Duplicate 数组中是否有重复的数字
- Contains Duplicate [leetcode] 判断数组中是否有重复的元素
- Leetcode: 217. Contains Duplicate(数组是否包含重复数字)
- 217. Contains Duplicate (判断数组中是否有重复元素)
- [LeetCode]217. Contains Duplicate(判断数组中是否有重复元素)
- (LeetCode)Contains Duplicate -- 查看数组是否重复
- Contains Duplicate判断数组是否有重复元素
- Contains Duplicate II 找出数组中是否有重复元素,长度小于k
- 数组中是否有重复的数字
- Contains Duplicate 数组中是否包含重复元素
- leetcode217---Contains Duplicate(是否有重复数)
- 219. Contains Duplicate II---数组中两个重复的数字的下标最多相差k
- 219. Contains Duplicate II (判断数组中是否有重复元素且其下标之差不超过k)
- 判断数组中是否有重复的数字
- 判断数组中是否有重复的数字(C++)
- 217.Contains Duplicate(判断一个数组是否有重复数出现)
- Leetcode:219. Contains Duplicate II(数组是否含有重复元素)
- LeetCode Contains Duplicate 数组
- 计蒜客 难题题库 008 字符串长度
- 对自己的了解
- 机房收费系统合作版之初体验
- mac下的git的安装与简单的配置
- 拉姆斯菲尔德规则读书笔记
- leetcode 217 Contains Duplicate 数组中是否有重复的数字
- 排序
- Spring学习笔记一(Spring简单介绍)
- 一句话区分常量指针和指针常量
- 计蒜客 难题题库 009 元素移除
- 可变数组学习整理
- hive集合统计函数
- mysql常用语句
- c语言复习 —— 数组