美文网首页
LeetCode 217 Contains Duplicate方

LeetCode 217 Contains Duplicate方

作者: TFprime | 来源:发表于2019-03-06 09:59 被阅读0次

问题

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

Solutions

用两种方法进行解答

使用HashSet

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

#include<iostream>
#include<unordered_set>
#include<vector>
using namespace std;

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        bool result = false;
        unordered_set<int> 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<int> nums = {1, 2, 3, 4, 4};
    Solution solution;
    bool result = solution.containsDuplicate(nums);
    cout << result << endl;
    return 0;
}

先排序,然后依次比较

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

#include<iostream>
#include<unordered_set>
#include<vector>
using namespace std;

class Solution {
public:
    bool containsDuplicate(vector<int>& 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<int> nums = {1, 2, 3, 4};
    Solution solution;
    bool result = solution.containsDuplicate(nums);
    cout << result << endl;
    return 0;
}

相关文章

网友评论

      本文标题:LeetCode 217 Contains Duplicate方

      本文链接:https://www.haomeiwen.com/subject/rsgzuqtx.html