LeetCode【217. Contains Duplicate】
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.
?
思路1.
對(duì)每一個(gè)數(shù)字都與其后序的數(shù)字進(jìn)行比較,如果相同則返回true,如果不同,則指導(dǎo)遍歷完最后一個(gè)數(shù)字返回false,時(shí)間復(fù)雜度為(n-1)+(n-2)+....2+1,所以是O(n2),代碼就不寫了,這方法不好。
思路2.
先排序,然后在遍歷vector,如果有相鄰的值相同,則返回true,負(fù)責(zé)將pivot設(shè)置為當(dāng)前的值。總的時(shí)間復(fù)雜度為排序O(nlogn)+遍歷O(n)
class Solution { public:bool containsDuplicate(vector<int>& nums) {bool flag = false;int len = nums.size();if(len > 1){sort(nums.begin(),nums.end());int MarkNum = nums[0];for(int i = 1; i<= len; i++){if(nums[i] == MarkNum)flag = true;elseMarkNum=nums[i];}}elseflag = false;return flag;} };
思路3,利用額外空間,unordered_map,如果元素不存在,計(jì)數(shù)器的值加1,如果存在,則返回true
class Solution { public:bool containsDuplicate(vector<int>& nums) {unordered_map<int,int> cmpMap;for( int i = 0; i < nums.size(); i++ ){if( cmpMap.find(nums[i]) == cmpMap.end() ){cmpMap[nums[i]]++;}else{return true;}}return false;} };思路3我本來(lái)以為時(shí)間復(fù)雜度應(yīng)該在O(n)但提交以后,速度還沒(méi)思路2的快,不知道是什么原因。
轉(zhuǎn)載于:https://www.cnblogs.com/rockwall/p/5744246.html
總結(jié)
以上是生活随笔為你收集整理的LeetCode【217. Contains Duplicate】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: django 初试
- 下一篇: centos6下时间同步(ntp)操作