[LeetCode]10. Contains Duplicate重複資料偵測

來源:互聯網
上載者:User

標籤:

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:暴力破解,時間複雜度O(n^2)。從頭至尾掃描數組,將當前值與數組其他值一一進行比較,若有相同,則返回true;否則直到數組末尾仍沒找到重複值,則返回false。

class Solution {public:    bool containsDuplicate(vector<int>& nums) {        int n = nums.size();        for(int i = 0; i < n; i++)        {            for(int j = i + 1; j < n; j++)            {                if(nums[i] == nums[j])                    return true;            }        }        return false;    }};

 

解法2:先將數組按升序排序,然後比較相鄰的兩個元素是否有相等的即可。因為一般交換排序最快可以達到O(nlogn),最後掃描一趟耗時O(n),因此時間複雜度為O(nlogn)。

class Solution {public:    bool containsDuplicate(vector<int>& nums) {        int n = nums.size();        sort(nums.begin(), nums.end());                for(int i = 0; i < n - 1; i++)        {            if(nums[i] == nums[i + 1])                return true;        }        return false;    }};

 

解法3:由解法2引申想到空間換時間的方法,桶排序或者計數排序等都可以使得時間複雜度降到O(n),因此整個演算法時間複雜度為O(n)。但是此法有個缺點:輸入數組的元素範圍需在一定範圍內,並且已知這個範圍。一個好的方法即是使用STL的map,也可以自己實現Hash表和相應演算法。

class Solution {public:    bool containsDuplicate(vector<int>& nums) {        int n = nums.size();        map<int, int> mii;        for(int i = 0; i < n; i++)        {            int cnt = ++mii[nums[i]];            if(cnt > 1)                return true;        }                return false;    }};

 

[LeetCode]10. Contains Duplicate重複資料偵測

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.