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