Fruit Into Baskets LeetCode solution in Python
1class Solution:2def totalFruit(self, fruits: List[int]) -> int:3ans = 04fruitdict = defaultdict()5stack = []6i, j = 0, 078while j < len(fruits):9if fruits[j] not in fruitdict and len(fruitdict) < 2:10stack.append(fruits[j])11fruitdict[fruits[j]] = j12j += 11314elif fruits[j] in fruitdict:15fruitdict[fruits[j]] = j16j += 11718else:19if fruitdict[stack[0]] > fruitdict[stack[1]]:20i = fruitdict[stack[1]] + 121del fruitdict[stack[1]]22stack.pop()23else:24i = fruitdict[stack[0]] + 125del fruitdict[stack[0]]26stack.pop(0)2728ans = max(ans, j - i)29return ans