1. 程式人生 > >[LeetCode] Contains Duplicate 包含重複值

[LeetCode] 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.

這道題不算難題,就是使用一個雜湊表,遍歷整個陣列,如果雜湊表裡存在,返回false,如果不存在,則將其放入雜湊表中,程式碼如下:

 解法一

class Solution {
public: bool containsDuplicate(vector<int>& nums) { unordered_map<int, int> m; for (int i = 0; i < nums.size(); ++i) { if (m.find(nums[i]) != m.end()) return true; ++m[nums[i]]; } return false; } };

這題還有另一種解法,就是先將陣列排個序,然後再比較相鄰兩個數字是否相等,時間複雜度取決於排序方法,程式碼如下:

解法二

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

相似題目: