---
# System prepended metadata

title: '20200219'

---

# 20200219


Input: [-2,1,-3,4,-1,2,1,-5,4]
Output: 6
Input: [-2, 1, 2, 3, -9, 1, 10]
Output: 11

-min ~ max

[-2, 1, -3, 4, -1, 2, 1, -5, 4]
[-2, 1, -2, 4, 3, 5, 6, 1, 5]
6

```
public int maxSub(int[] input) {
    int max = input[0];
    for (int i = 1; i < input.length; i++) {
        if (input[i] < input[i] + input[i - 1]) {
            input[i] = input[i] + input[i - 1];
        }
        
        max = Math.max(max, input[i]);
    }
    return max;
}
```

root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 7
                                     
                3(n)
              /  \
             5(5) 1(n)
           /  \  / \
          6   2 0(n)8(n)
             / \
            7  4


```
//Definition for a binary tree node.
public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode(int x) { val = x; }
}

public TreeNode lowestAncestor(TreeNode root, TreeNode p, TreeNode q) {
    if (root == null || root.val == p.val || root.val == q.val) {
        return root
    } else if (lowestAncestor(root.left, p, q) == null) 
        return right;
    } else if ( lowestAncestor(root.right, p, q) == null) {
        return left;
    } else {
        return root;
    }
}

```

Input: [1, 0, 3, 0, 4, 2]
Output: [1, 3, 4, 2, 0, 0]

fast 1
slow 1
arr = [1, 0, 3, 0, 4, 2]

if (arr[fast] != 0) {
    int temp = 1
    arr[fast] = arr[slow]
    arr[slow] = temp
    slow++;
}

fast++
    
       
    
[1, 0, 3, 0, 4, 2]
             
       
[1, 3, 0, 0, 4, 2]
                f
                  s
[1, 3, 4, 0, 0, 2]


[1, 3, 4, 2, 0, 0]

```
public void moveZeroes(int[] nums) {
    int slow = 0;
    for (int fast = 0; fast < nums.length; fast++) {
    if (arr[fast] != 0) {
        int temp = arr[fast];
        arr[fast] = arr[slow];
        arr[slow] = temp;
        slow++;
    }
}
```