leetcode217---Contains Duplicate(是否有重复数)

来源:互联网 发布:长城三公主知乎 编辑:程序博客网 时间:2024/05/01 17:21

问题描述:

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.

也就是说,给你一个包含全是整数的数组,如果有的数出现至少两次,则返回true,如果所有的数都不相同,则返回false。

问题求解:

方法一:先对数组排序,查看相邻的数是否相等。

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

方法二:使用hash set求解

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

方法三:使用hash map求解

class Solution {public:    bool containsDuplicate(vector<int>& nums) {        int n=nums.size();        unordered_map<int, int> um;        for(int i=0;i<n;i++)        {            if(um.find(nums[i])!= um.end())                return true;            um.insert({nums[i], i});//注意与hash set插入不同        }        return false;    }};
0 0
原创粉丝点击