class Solution { public: int takeAttendance(vector<int>& records) { int left = 0; int right = records.size()-1; while(left <= right) { int mid = left + (right-left) / 2; if(mid == records[mid]) left = mid+1; else right = mid-1; } return left; } }; class Solution { public: TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) { if(!root1) return root2; if(!root2) return root1; if(!root1 && !root2) return nullptr; root1->val = root1->val+root2->val; root1->left = mergeTrees(root1->left,root2->left); root1->right = mergeTrees(root1->right,root2->right); return root1; } }; class Solution { public: void merge(vector<int>& A, int m, vector<int>& B, int n) { int p1 = m-1; int p2 = n-1; int tmp; int p3 = m+n-1; while(p1 >= 0 || p2 >=0 ) { if(p1 == -1) { tmp = B[p2]; p2--; } else if(p2==-1) { tmp = A[p1]; p1--; } else if(A[p1] > B[p2]) { tmp = A[p1]; p1--; } else { tmp = B[p2]; p2--; } A[p3] = tmp; p3--; } } };