Fruit Into Baskets LeetCode solution in Java
1class Solution {2public int totalFruit(int[] fruits) {3if (fruits == null || fruits.length == 0) {4return 0;5}6int start = 0, end = 0, res = 0;7HashMap<Integer, Integer> map =8new HashMap<>(); // key = type of fruit on tree, value = last index / newest index of that9// fruit1011while (end < fruits.length) {12if (map.size() <= 2) {13map.put(fruits[end], end);14end++;15}1617if (map.size() > 2) {18int leftMost = fruits.length;19for (int num : map.values()) {20leftMost = Math.min(leftMost, num);21}22map.remove(fruits[leftMost]);23start = leftMost + 1;24}2526res = Math.max(res, end - start);27}28return res;29}30}