DOTY
5) LeetCode - Remove Element 본문
728x90
반응형
https://leetcode.com/problems/remove-element/?envType=study-plan-v2&envId=top-interview-150
나의 첫 코드는 이러했다.
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int count = nums.size();
for(int i = 0; i < nums.size(); i++)
{
if(nums[i] == val)
{
nums.erase(nums.begin() + i);
count--;
i--;
}
}
return count;
}
};
정답은 맞지만 해당 코드의 문제는 시간 복잡도.
O(N^2)를 사용하게 된다.
그 이유는 erase 함수.
erase
erase 함수는 벡터의 원소를 삭제하는 것 까지는 좋지만 원소들을 하나씩 앞으로 당겨야하기 때문에 최악의 경우 O(N)의 복잡도를 가진다.
따라서 시간을 단축시키기 위해서는 새로운 벡터 변수를 가지고 위의 문제를 다루는 것이 좋다.
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
vector<int> answer;
int count = 0;
for(int i = 0; i < nums.size(); i++)
{
if(nums[i] != val)
{
answer.push_back(nums[i]);
count++;
}
}
nums = answer;
return count;
}
};
728x90
반응형
'Algorithm > Data Structure' 카테고리의 다른 글
6) LeetCode - Majority Element (0) | 2024.09.03 |
---|---|
4) LeetCode - Merge Sorted Array (0) | 2024.05.29 |
3) 프로그래머스 Lv2 - 두 큐 합 같게 만들기 (0) | 2023.03.22 |
2) 백준 1874 - 스택 수열 (0) | 2023.01.14 |
1) 백준 4949 - 균형잡힌 세상 (0) | 2023.01.13 |
Comments