[LeetCode]217-Contains Duplicate 几种解法
来源:互联网 发布:六轴机械手臂 算法 编辑:程序博客网 时间:2024/06/05 16:33
数组重复元素查找:
解法一 :sort 后相邻位比较 40ms
class Solution {public: bool containsDuplicate(vector<int>& nums) { if(nums.size() <= 1) return false; sort(nums.begin(),nums.end()); for(int i = 0; i<nums.size()-1;i++){ if(nums[i] == nums[i+1]) return true; } return false; }};
解法二:采用STL的 unordered_set 基本hash思想 52ms
class Solution {public: bool containsDuplicate(vector<int>& nums) { unordered_set<int> st; for (auto n : nums) { if (st.find(n) != st.end()) return true; else st.insert(n); } return false; }};
解法三:map记录已存在的int
class Solution {public: bool containsDuplicate(vector<int>& nums) { //runtime:104ms if(nums.size()<=1)return false; map<int,bool> m; for(int i=0;i<nums.size();i++){ if(m[nums[i]]==true)return true; m[nums[i]]=true; } return false; }};
解法四:自己手写一个快排算法 36ms
class Solution {public: bool containsDuplicate(vector<int>& nums) { int len = nums.size(); if (len < 1) { return false; } quick_sort(nums, 0, len); int prev = nums[0]; for (int i=1; i<len; i++) { if (nums[i] == prev) { return true; } prev= nums[i]; } return false; } void quick_sort(vector<int>& nums, int start, int end) { if (start >= end) { return; } int di = partition(nums, start, end); quick_sort(nums, start, di); quick_sort(nums, di + 1, end); } int partition(vector<int>& nums, int start, int end) { if (start >= end) { return -1; } end--; swap(nums[(start + end) / 2], nums[end]); int pv = nums[end]; int di = start; for (int i=start; i<end; i++) { if (nums[i] < pv) { swap(nums[i], nums[di++]); } } swap(nums[end], nums[di]); return di; }};
0 0
- [LeetCode]217-Contains Duplicate 几种解法
- leetcode [Contains Duplicate]//待整理多种解法
- Contains Duplicate - LeetCode 217
- LeetCode 217:Contains Duplicate
- leetcode 217: Contains Duplicate
- Leetcode[217]-Contains Duplicate
- 【leetcode】【217】Contains Duplicate
- LeetCode 217 Contains Duplicate
- leetcode-217-Contains Duplicate
- Leetcode 217 Contains Duplicate
- Leetcode 217 Contains Duplicate
- leetcode 217:Contains Duplicate
- LeetCode 217: Contains Duplicate
- LeetCode #217 Contains Duplicate
- leetCode #217 Contains Duplicate
- leetcode 217: Contains Duplicate
- Leetcode #217 Contains Duplicate
- [Leetcode]#217 Contains Duplicate
- 再谈DFS(1)
- “无限极”分类数据表设计的简单再总结
- Attribute "xxx" has already been defined
- 【第6篇】TypeScript函数function的案例代码详解
- php-windows环境搭建
- [LeetCode]217-Contains Duplicate 几种解法
- 学习资源集锦
- PHP 如何启动用户进程
- POJ 1228 Grandpa's Estate (凸包)
- OC中的内存管理
- Android Animation
- 【第7篇】TypeScript泛型的案例代码详解
- 【Java设计模式】· 访问者模式(Visitor Pattern)
- 排序算法 C++代码实现