Algorithm/CPP
[C++, LeetCode] Contains Duplicate 벡터에 중복 값 포함되었는지 확인하기
박한결
2021. 6. 15. 15:40
문제: https://leetcode.com/problems/contains-duplicate/
Contains Duplicate - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
앞에서 풀었던 문제(정렬된 벡터에서 중복 제거하기)와 유사해서 금방 풀었다.
🔽풀이 1
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
int before = nums.size();
sort(nums.begin(), nums.end());
nums.erase(unique(nums.begin(), nums.end()), nums.end());
return (before != nums.size());
}
};
그런데 이 문제는 중복을 굳이 제거할 필요 없는데 제거 했으니 느릴 것 같았는데
'Your runtime beats 97.17 % of cpp submissions.'
97.17% 로 빠른 편이었다.
다른 사람들의 코드를 보면서 c++에도 set이 있다는 걸 알게됐다.
🔽풀이 2
#include <set>
using namespace std;
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
return nums.size() > set<int>(nums.begin(), nums.end()).size();
}
};
그런데 set 처럼 중복을 제거하는 방법(첫번째)은 16ms가 걸리고 set을 사용하면 60ms가 걸린다. 왜일까.. 나중에 찾아봐야 겠다.