Longest Increasing Subsequence LeetCode solution in Java
1class Solution {2public int lengthOfLIS(int[] nums) {34ArrayList<Integer> lis = new ArrayList<>();56for (int num : nums) {78int size = lis.size();910if (size == 0 || size > 0 && num > lis.get(size - 1)) {11lis.add(num);12} else {13int insertIndex = bs(lis, num);14lis.set(insertIndex, num);15}16}1718return lis.size();19}2021int bs(List<Integer> list, int target) {22int lo = 0;23int hi = list.size() - 1;2425while (lo < hi) {26int mid = (lo + hi) / 2;27if (list.get(mid) < target) {28lo = mid + 1;29} else {30hi = mid;31}32}33return lo;34}35}