MCPcopy
hub / github.com/HuberTRoy/leetCode / totalFruit

Method totalFruit

Array/FruitIntoBaskets.py:96–145  ·  view source on GitHub ↗

:type tree: List[int] :rtype: int

(self, tree)

Source from the content-addressed store, hash-verified

94"""
95class Solution(object):
96 def totalFruit(self, tree):
97 """
98 :type tree: List[int]
99 :rtype: int
100 """
101 # [{count, repeat_count, capacity, self-value}, ]
102 tree_seed = [
103 {'count': 1, 'repeat_count': 1, 'capacity': set([tree[0]]), 'self_value': tree[0]}
104 ]
105
106 for i in range(1, len(tree)):
107 prev = tree_seed[i-1]
108
109 # repeat self_value
110 if tree[i] == prev.get('self_value'):
111 tree_seed.append({'count': prev.get('count') + 1,
112 'repeat_count': prev.get('repeat_count') + 1,
113 'capacity': prev.get('capacity'),
114 'self_value': tree[i]})
115 continue
116
117 # already into basket but cannot beside each other.
118
119 if tree[i] in prev.get('capacity'):
120 tree_seed.append({'count': prev.get('count') + 1,
121 'repeat_count': 1,
122 'capacity': prev.get('capacity'),
123 'self_value': tree[i]})
124 continue
125
126 # != but can taken into basket.
127 if len(tree_seed[i-1].get('capacity')) == 1:
128 new = prev.get('capacity')
129 new.add(tree[i])
130
131 tree_seed.append({'count': prev.get('count') + 1,
132 'repeat_count': 1,
133 'capacity': new,
134 'self_value': tree[i]})
135 continue
136
137 # Found Third-fruit.
138 new = set()
139 new.add(tree[i])
140 new.add(tree[i-1])
141 tree_seed.append({'count': tree_seed[i-1].get('repeat_count') + 1,
142 'repeat_count': 1,
143 'capacity': new,
144 'self_value': tree[i]})
145 return max(tree_seed, key=lambda x: x['count']).get('count')
146
147# maxes = 0
148# one = None

Callers

nothing calls this directly

Calls 2

getMethod · 0.80
addMethod · 0.80

Tested by

no test coverage detected