문제: https://leetcode.com/problems/contains-duplicate/
앞에서 풀었던 문제(정렬된 벡터에서 중복 제거하기)와 유사해서 금방 풀었다.
🔽풀이 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가 걸린다. 왜일까.. 나중에 찾아봐야 겠다.
'Algorithm > CPP' 카테고리의 다른 글
[C++/LeetCode/Top Interview Questions]String (0) | 2021.06.16 |
---|---|
[C++/LeetCode/Top Interview Questions]Array (0) | 2021.06.15 |
[C++/LeetCode]Rotate Array(벡터 값 회전하기) (0) | 2021.06.15 |
[C++/LeetCode]주식을 사고 팔기 가장 좋은 시기 II (0) | 2021.06.15 |
[C++/LeetCode] 정렬된 배열(벡터)에서 중복 제거하기 (0) | 2021.06.15 |