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. 方法一、二重循環(huán),時間復(fù)雜度O(n*n),空間復(fù)雜度O(1); 方法二、利用系統(tǒng)自帶的sort對數(shù)組進(jìn)行排序,然后再前后查找,時間復(fù)雜度為O(nlgn),空間復(fù)雜度O(1); 方法三、利用hash表的方法,時間復(fù)雜度和空間復(fù)雜度均為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(); }};新聞熱點
疑難解答