File tree Expand file tree Collapse file tree 4 files changed +104
-0
lines changed
binary-tree-level-order-traversal Expand file tree Collapse file tree 4 files changed +104
-0
lines changed Original file line number Diff line number Diff line change 1+ /*
2+ queueλ₯Ό νμ©ν΄μ μμ λ
Έλμ μλ₯Ό μΈκ³ , κ·Έλ§νΌ λ°λ³΅λ¬Έμ λλ©΄μ
3+ κ° λ
Έλμ κ°μ μ μ₯νλ λ°©μμΌλ‘ κΉμ΄μ νΈλ¦¬ μνλ₯Ό ꡬν
4+ νΈλ¦¬μ λͺ¨λ λ
Έλλ₯Ό ν λ²μ© λ°©λ¬Ένλ―λ‘ O(n)μ μκ°λ³΅μ‘λ,
5+ νΈλ¦¬μ λͺ¨λ λ
Έλλ₯Ό μ μ₯νλ―λ‘ O(n)μ κ³΅κ° λ³΅μ‘λλ₯Ό κ°μ§λ€.
6+ */
7+ class Solution {
8+ public:
9+ vector<vector<int >> levelOrder (TreeNode* root) {
10+ queue<TreeNode*> q;
11+ vector<vector<int >> ans;
12+ if (!root)
13+ return ans;
14+
15+ q.push (root);
16+ while (!q.empty ()) {
17+ vector<int > tmp;
18+ int size = q.size ();
19+ for (int i = 0 ; i < size; i++) {
20+ TreeNode* child = q.front ();
21+ q.pop ();
22+ tmp.push_back (child->val );
23+ if (child->left )
24+ q.push (child->left );
25+ if (child->right )
26+ q.push (child->right );
27+ }
28+ ans.push_back (tmp);
29+ }
30+ return ans;
31+ }
32+ };
Original file line number Diff line number Diff line change 1+ /*
2+ n + 1λ² λ°λ³΅νλ©° dpλ°°μ΄μ μ μ₯νκΈ° λλ¬Έμ μκ°λ³΅μ‘λ O(n), 곡κ°λ³΅μ‘λ O(n)λ§νΌ μμ
3+ */
4+ class Solution {
5+ public:
6+ vector<int > countBits (int n) {
7+ vector<int > dp (n + 1 , 0 ); // 0λΆν° nκΉμ§μ΄λ―λ‘ n + 1κ° νμ, dp[0] = 0
8+
9+ // dpλ°°μ΄μ νμ©, μ΅μμλΉνΈ + (λ§μ§λ§λΉνΈ&1)λ₯Ό dpμ μ μ₯
10+ for (int num = 1 ; num < n + 1 ; num++) {
11+ dp[num] = dp[num >> 1 ] + (num & 1 );
12+ }
13+ return dp;
14+ }
15+ };
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+ int rob (vector<int >& nums) {
4+
5+ if (nums.size () == 1 )
6+ return (nums[0 ]);
7+
8+ // 첫λ²μ§Έ μ§ ~ λ§μ§λ§ - 1λ²μ§Έ μ§κΉμ§
9+ int prev = 0 ;
10+ int curr = nums[0 ];
11+
12+ for (int i = 1 ; i + 1 < nums.size (); i++) {
13+ int tmp = curr;
14+ // λ°λ‘ μ μ§μ ν°λ κ² λμμ§, μ μ λ²μ§Έ μ§κ³Ό νμ¬(nums[i])μ§μ ν°λ κ² λμμ§ νλ³
15+ curr = max (curr, prev + nums[i]);
16+ prev = tmp; // μ μ λ²μ§Έ μ§μ κ°μ κ°±μ
17+ }
18+ int fstrob = curr;
19+
20+ // λλ²μ§Έ μ§ ~ λ§μ§λ§ μ§κΉμ§
21+ prev = 0 ;
22+ curr = nums[1 ];
23+ for (int i = 2 ; i < nums.size (); i++) {
24+ int tmp = curr;
25+ curr = max (curr, prev + nums[i]);
26+ prev = tmp;
27+ }
28+ int scdrob = curr;
29+
30+ return max (fstrob, scdrob);
31+ }
32+ };
Original file line number Diff line number Diff line change 1+ /*
2+ μ λ ¬μ O(nlogn), ν μ½μ
λ° μμ μ O(logn) μμλλ―λ‘ μ 체 μκ° λ³΅μ‘λλ O(nlogn)
3+ μ΅λ nκ°μ νμκ° μμ μ μμΌλ―λ‘ κ³΅κ° λ³΅μ‘λλ O(n)
4+ */
5+ class Solution {
6+ public:
7+ int minMeetingRooms (vector<Interval> &intervals) {
8+ if (intervals.empty ())
9+ return 0 ;
10+
11+ sort (intervals.begin (), intervals.end ()); // μμ μκ° κΈ°μ€ μ λ ¬
12+ priority_queue<int , vector<int >, greater<int >> minHeap; // μ΅μνμ νμ μ’
λ£ μκ° μ μ₯
13+
14+ minHeap.push (intervals[0 ][1 ]);
15+ for (int i = 1 ; i < intervals.size (); i++) {
16+ int start = intervals[i][0 ];
17+ int end = intervals[i][1 ];
18+
19+ if (start >= minHeap.top ()) // μ¬μ¬μ© κ°λ₯ν λ pop
20+ minHeap.pop ();
21+ minheap.push (end); // μλ‘μ΄ νμ μ’
λ£μκ° νμ μΆκ°
22+ }
23+ return minHeap.size ();
24+ }
25+ };
You canβt perform that action at this time.
0 commit comments