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. 方法一、二重循环,时间复杂度O(n*n),空间复杂度O(1); 方法二、利用系统自带的sort对数组进行排序,然后再前后查找,时间复杂度为O(nlgn),空间复杂度O(1); 方法三、利用hash表的方法,时间复杂度和空间复杂度均为O(n);
bool containsDuplicate(vector<int>& nums){ int len = nums.size(); if(len<=1) { return false; } map<int,int> mp; for(int i = 0; i < len; i++) { if(mp.find(nums[i]) != mp.end()) { return true; break; } else { mp.insert(pair<int,int>(nums[i],1)); } } return false;}方法四、利用c++的set集合的特性:
#include <set>using namespace std;class Solution {public: bool containsDuplicate(vector<int>& nums) { return nums.size() > set<int>(nums.begin(), nums.end()).size(); }};新闻热点
疑难解答