What is the binary search template?
boolean binarySearchIterative(int[] nums, int num) {
if (nums.length == 0) {
return false;
}
int low = 0;
int high = nums.length - 1;
while (low <= high) {
int mid = (low + high) >>> 1; // no overflow
if (num == nums[mid]) {
return true;
}
if (num < nums[mid]) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return false;
}What is the in-order-traversal template?
void inOrderTraversal(Node<Integer> node) {
if (node == null) {
return;
}
inOrderTraversal(node.left);
System.out.println(node.val);
inOrderTraversal(node.right);
}What is the pre-order-traversal template?
void preOrderTraversal(TreeNode node) {
if (node == null) {
return;
}
System.out.println(node);
preOrderTraversal(node.left);
preOrderTraversal(node.right);
}What is the post-order-traversal template?
void postOrderTraversal(Node<Integer> root) {
if (root != null) {
postOrderTraversal(root.left);
postOrderTraversal(root.right);
System.out.println(root.val);
}
}What is the DFS on tree template?
Node dfsTree(Node node, int target) {
if (node == null)
return null;
if (node.getElement() == target)
return node;
Node left = dfsTree(node.getLeft(), target);
if (left != null)
return left;
Node right = dfsTree(node.getRight(), target);
return right;
}What is the sliding window template?
function fn(arr):
left = 0
for (int right = 0; right < arr.length; right++):
Do some logic to "add" element at arr[right] to window
while WINDOW_IS_INVALID:
Do some logic to "remove" element at arr[left] from window
left++
Do some logic to update the answer