-
[leetcode] 26. Remove Duplicates from Sorted Array알고리즘 2021. 4. 14. 20:58728x90
class Solution { public: int removeDuplicates(vector<int>& nums) { int size = nums.size(); for(int i = 0; i<size; i++){ int tmp = nums[0]; while(nums.size() > 0 && nums[0] == tmp){ i++; nums.erase(nums.begin()); } nums.push_back(tmp); i--; } return nums.size(); } };
인라인으로 풀라는 조건이 있길래 생각나는대로 배열 뒤에 원소를 붙이고 지나간 원소들은 삭제처리했다.
중간중간에 계속 삭제처리를 해서 타임아웃을 예상했는데 아슬아슬하게 통과되었다.
discuss를 보니 좀 더 효율적인 방법이 있던데 아래와 같다.
내 소스가 훨씬 직관적!!! 이라고 말하고 싶다만 역시 효율적인 아래소스가 정해로 보인다.
class Solution { public: int removeDuplicates(vector<int>& nums) { if(nums.empty()) return 0; int index = 0; for(int i = 1; i < nums.size(); i++) if(nums[i] != nums[index]) nums[++index] = nums[i]; return index+1; } };
'알고리즘' 카테고리의 다른 글
[leetcode] 581. Shortest Unsorted Continuous Subarray (0) 2021.04.16 [leetcode] 239. Sliding Window Maximum (0) 2021.04.16 [leetcode] 86. Partition List (0) 2021.04.14 [leetcode] 130. Surrounded Regions (0) 2021.04.08 [leetcode] 304. Range Sum Query 2D - Immutable (0) 2021.04.08