File tree Expand file tree Collapse file tree 7 files changed +148
-0
lines changed Expand file tree Collapse file tree 7 files changed +148
-0
lines changed Original file line number Diff line number Diff line change
1
+ TreeNode* searchBST (TreeNode* root, int val) {
2
+ if (root == nullptr )
3
+ return root;
4
+
5
+ TreeNode* node = root;
6
+ while (node != nullptr )
7
+ {
8
+ if (node->val == val)
9
+ return node;
10
+ else if (node->val < val)
11
+ node = node->right ;
12
+ else
13
+ node = node->left ;
14
+ }
15
+
16
+ return nullptr ;
17
+ }
Original file line number Diff line number Diff line change
1
+ string toLowerCase (string str) {
2
+ transform (str.begin (), str.end (), str.begin (), ::tolower);
3
+
4
+ return str;
5
+ }
Original file line number Diff line number Diff line change
1
+ bool canVisitAllRooms (vector<vector<int >>& rooms) {
2
+ int N = rooms.size ();
3
+ if (N == 1 )
4
+ return true ;
5
+
6
+ int * number = new int [N];
7
+ memset (number, 0 , N*sizeof (int ));
8
+ number[0 ] = 1 ;
9
+ int ct = 1 ;
10
+
11
+ deque<int > dq (rooms[0 ].begin (), rooms[0 ].end ());
12
+
13
+ int len = dq.size ();
14
+ while (len != 0 )
15
+ {
16
+ for (int i = 0 ; i < len; ++i)
17
+ {
18
+ if (number[dq[i]] == 0 )
19
+ {
20
+ dq.insert (dq.end (), rooms[dq[i]].begin (), rooms[dq[i]].end ());
21
+ number[dq[i]] = 1 ;
22
+ ++ct;
23
+ }
24
+ }
25
+ dq.erase (dq.begin (), dq.begin () + len);
26
+ len = dq.size ();
27
+ }
28
+ delete [] number;
29
+ return ct == N;
30
+ }
Original file line number Diff line number Diff line change
1
+ vector<vector<int >> transpose (vector<vector<int >>& A) {
2
+ int row = A.size ();
3
+ if (row == 0 )
4
+ return A;
5
+ int col = A[0 ].size ();
6
+
7
+ vector<vector<int >> res (col, vector<int >(row, 0 ));
8
+ for (int i = 0 ; i < row; ++i)
9
+ {
10
+ for (int j = 0 ; j < col; ++j)
11
+ {
12
+ res[j][i] = A[i][j];
13
+ }
14
+ }
15
+
16
+ return res;
17
+ }
Original file line number Diff line number Diff line change
1
+ bool leafSimilar (TreeNode* root1, TreeNode* root2) {
2
+ if (root1 == nullptr && root2 == nullptr )
3
+ return true ;
4
+
5
+ if (root1 == nullptr || root2 == nullptr )
6
+ return false ;
7
+
8
+ vector<int > leaf1, leaf2;
9
+ getLeaf (root1, leaf1);
10
+ getLeaf (root2, leaf2);
11
+
12
+ int len1 = leaf1.size ();
13
+ int len2 = leaf2.size ();
14
+ if (len1 != len2)
15
+ return false ;
16
+
17
+ for (int i = 0 ; i < len1; ++i)
18
+ {
19
+ if (leaf1[i] != leaf2[i])
20
+ return false ;
21
+ }
22
+
23
+ return true ;
24
+ }
25
+
26
+ void getLeaf (TreeNode* node, vector<int >& vec)
27
+ {
28
+ if (node->left == nullptr && node->right == nullptr )
29
+ vec.push_back (node->val );
30
+ else
31
+ {
32
+ if (node->left != nullptr )
33
+ getLeaf (node->left , vec);
34
+ if (node->right != nullptr )
35
+ getLeaf (node->right , vec);
36
+ }
37
+ }
Original file line number Diff line number Diff line change
1
+ ListNode* middleNode (ListNode* head) {
2
+ if (head == nullptr || head->next == nullptr )
3
+ return head;
4
+
5
+ int len = 0 ;
6
+ ListNode* node = head;
7
+ while (node != nullptr )
8
+ {
9
+ node = node->next ;
10
+ ++len;
11
+ }
12
+ int pos = len/2 ;
13
+ int i = 0 ;
14
+ node = head;
15
+ while (i != pos)
16
+ {
17
+ node = node->next ;
18
+ ++i;
19
+ }
20
+
21
+ return node;
22
+ }
Original file line number Diff line number Diff line change
1
+ bool isMonotonic (vector<int >& A) {
2
+ int len = A.size ();
3
+ if (len == 1 )
4
+ return true ;
5
+
6
+ int pos = 1 ;
7
+ while (A[pos] == A[0 ])
8
+ ++pos;
9
+ if (pos == len)
10
+ return true ;
11
+
12
+ bool flag = A[0 ] <= A[pos] ? true : false ;
13
+ for (int i = pos; i < len-1 ; ++i)
14
+ {
15
+ if ((flag && A[i] > A[i+1 ]) || (!flag && A[i] < A[i+1 ]))
16
+ return false ;
17
+ }
18
+
19
+ return true ;
20
+ }
You can’t perform that action at this time.
0 commit comments