LeetCode刷题记录—— 217. 存在重复元素
Posted Esperanza203
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode刷题记录—— 217. 存在重复元素相关的知识,希望对你有一定的参考价值。
class Solution { //方法零:暴力搜索 (n^2) 超出时间限制 /*public: bool containsDuplicate(vector<int>& nums) { for(int i=0;i<nums.size();i++){ for(int j=i+1;j<nums.size();j++){ if(nums[i]==nums[j]){ return true; } } } return false; }*/ //方法一:遍历数组,将数组中每个数作为key存入map中,插入map前先查询map中是否已经含有该key,若有则数字重复(实质上也是暴力搜索) /* public: bool containsDuplicate(vector<int>& nums) { map<int, int> m1; for (auto i = nums.cbegin(); i != nums.cend(); i++) { auto pos = m1.find(*i); if(pos != m1.end()){ return true; }else { m1[*i] = 1; } } return false; }*/ //方法二(更优!):先对数组进行排序(nlogn),再遍历排序后数组,比较相邻的两个数是否相同 public: bool containsDuplicate(vector<int>& nums) { if(nums.empty()) return false; sort(nums.begin(), nums.end() ); int temp = nums.front(); int flag = 0; for(int n : nums) { if(n==temp&&flag==1) return true; else temp=n; flag=1; } return false; } };
以上是关于LeetCode刷题记录—— 217. 存在重复元素的主要内容,如果未能解决你的问题,请参考以下文章