LeetCode 217 Contains Duplicate方法简析

问题

检测一个数组里面是否有相同的数,返回一个bool类型。
LeetCode 217 Contains Duplicate

Solutions

用两种方法进行解答

使用HashSet

HashSet是一种不包含重复元素的集合。构造一个空的hashset,只要没出现过的数字就放到hashset里,如果发现一个元素出现过,那么就说明有重复的元素,返回true,代码如下:

#include
#include
#include
using namespace std;

class Solution {
public:
    bool containsDuplicate(vector& nums) {
        bool result = false;
        unordered_set hashSet;
        for(int i = 0; i < nums.size(); i++) {
            if (hashSet.count(nums[i]) > 0) {
                result = true;
            } else {
                hashSet.insert(nums[i]);
            }
        }
        
        return result;
    }
};

int main() {
    vector nums = {1, 2, 3, 4, 4};
    Solution solution;
    bool result = solution.containsDuplicate(nums);
    cout << result << endl;
    return 0;
}

先排序,然后依次比较

先对数组进行大小排序,然后从前往后挨个比较,如果两个元素相同,那么一定是挨着的,所以比较的结果就为true,代码如下

#include
#include
#include
using namespace std;

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

int main() {
    vector nums = {1, 2, 3, 4};
    Solution solution;
    bool result = solution.containsDuplicate(nums);
    cout << result << endl;
    return 0;
}

你可能感兴趣的:(LeetCode 217 Contains Duplicate方法简析)