diff --git a/contains-duplicate/haung921209.md b/contains-duplicate/haung921209.md new file mode 100644 index 000000000..e0b1ea984 --- /dev/null +++ b/contains-duplicate/haung921209.md @@ -0,0 +1,37 @@ + + +# cpp stl +```cpp +class Solution { +public: + bool containsDuplicate(vector& nums) { + set numSet(nums.begin(), nums.end()); + return numSet.size() != nums.size(); + } +}; +``` + +- set으로 단순비교. 편리하나, 정렬에 비해 시간이 오래 걸림. +- unordered_set을 쓰면 set 방식에서 조금 더 빠를 수는 있음 + +```cpp +class Solution { +public: + bool containsDuplicate(vector& nums) { + sort(nums.begin(), nums.end()); + for(int i=0;i& nums) { + if(nums.size()==1) + return nums[0]; + + int res = max(nums[0], nums[1]); + vector sav(nums.size(), 0); + sav[0] = nums[0]; + sav[1] = res; + for(int i=2;i& nums) { + if(nums.size()<=1){ + return nums.size(); + } + priority_queue pq(nums.begin(), nums.end()); + int cnt = 1; + int maxCnt = 1; + int before = pq.top();pq.pop(); + while(pq.size()>0){ + int cur = pq.top(); pq.pop(); + if(before-cur ==1){ + cnt++; + maxCnt = max(maxCnt, cnt); + }else if(before==cur){ + continue; + }else{ + maxCnt = max(maxCnt, cnt); + cnt=1; + } + before = cur; + } + + return maxCnt; + } +}; +``` + +- 순서 유지 조건 없으므로, insert와 정렬을 동시에 할 수 있는 우선순위 큐 사용 +- 전체 정렬이 필요할 경우 정렬이 더 유리할 수 있으나, 최적화 여지가 우선순위 큐가 더 커서 사용 + - ex) 탐색 중단 조건 등 + + diff --git a/top-k-frequent-elements/haung921209.md b/top-k-frequent-elements/haung921209.md new file mode 100644 index 000000000..645d0d51a --- /dev/null +++ b/top-k-frequent-elements/haung921209.md @@ -0,0 +1,23 @@ +```cpp +class Solution { +public: + vector topKFrequent(vector& nums, int k) { + unordered_map freqCntMp; + vector> v(nums.size()+1, vector()); + int maxSize = 0; + for(int i=0;i0;idx--){ + if(v[idx].size()==k){ + return v[idx]; + } + } + return vector(); + } +}; +``` + diff --git a/two-sum/haung921209.md b/two-sum/haung921209.md new file mode 100644 index 000000000..160898711 --- /dev/null +++ b/two-sum/haung921209.md @@ -0,0 +1,46 @@ +## 단순 순회 + +```cpp +class Solution { +public: + vector twoSum(vector& nums, int target) { + int i=0,j=1; + for(i=0;i twoSum(vector& nums, int target) { + unordered_map valIdxMap; + + for(int idx=0;idx