貪婪計數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
沒有留言:
張貼留言