貪婪計數Python C++解Leetcode 2491 Divide Players Into Teams of Equal Skill
貪婪演算+counting sort加上2-pointer這樣就完成打敗100趴的快速C++解答[Python code請進]
Greedy algorithm+ counting sort + 2-pointer complete the quick C++ solution to defeat 100%.
[codes on Leetcode]https://leetcode.com/problems/divide-players-into-teams-of-equal-skill/solutions/5866450/greedy-sort-frequency-count-2-pointers-14ms-beats-100/
[Leetcode Playlist]https://www.youtube.com/watch?v=B1GQlUN08lk&list=PLYRlUBnWnd5IdDHk2BjqXwesydU17z_xk
[Python C++計數速解Leetcode 945 Minimum Increment to Make Array Unique]https://www.youtube.com/watch?v=tS-kunvQwcc
class Solution: def dividePlayers(self, skill: List[int]) -> int: freq=[0]*1001 Sum, xMin, xMax=0, 1000, 1 for x in skill: freq[x]+=1 Sum+=x xMin=min(xMin, x) xMax=max(xMax, x) n_2=len(skill)//2 if Sum%n_2!=0: return -1 team_skill=Sum//n_2 chemi=0 l, r=xMin, xMax while l<r: fL, fR=freq[l], freq[r] if l+r!=team_skill or fL!=fR: return -1 chemi+=fL*l*r l+=1 r-=1 if l==r and l*2==team_skill: chemi+=freq[l]//2*l*l return chemi
沒有留言:
張貼留言