当前位置:网站首页>Leetcode:20220213 week race (less bugs, top 10% 555)

Leetcode:20220213 week race (less bugs, top 10% 555)

2022-07-06 00:19:00 White speed Dragon King's review

 Insert picture description here
Ideas :
1. Divide the odd and even statistical data frequency
2. Then see if they are equal
3. Take down one as appropriate

src:

lass Solution:
    def minimumOperations(self, nums: List[int]) -> int:
        num1 = nums[::2]
        num2 = nums[1::2]
        n1 = len(num1)
        n2 = len(num2)
        
        if n1 * n2 == 0:
            return 0
        
        cnt1 = defaultdict(int)
        for num in num1:
            cnt1[num] += 1
        
        cnt2 = defaultdict(int)
        for num in num2:
            cnt2[num] += 1
        
        sort1 = sorted(cnt1.items(),key=lambda x:x[1],reverse=True) # Sort in descending order according to word frequency 
        sort2 = sorted(cnt2.items(),key=lambda x:x[1],reverse=True) # Sort in descending order according to word frequency 
        
        has = 0
        if sort1[0][0] != sort2[0][0]:
            has = sort1[0][1] + sort2[0][1]
        else:
            if len(sort1) == 1 and len(sort2) == 1:
                has = max(sort1[0][1], sort2[0][1])
            elif len(sort1) == 1:
                has = sort1[0][1] + sort2[1][1]
            elif len(sort2) == 1:
                has = sort2[0][1] + sort1[1][1]
            else:
                if sort1[1][1] + sort2[0][1] > sort1[0][1] + sort2[1][1]:
                    has = sort1[1][1] + sort2[0][1]
                else:
                    has = sort1[0][1] + sort2[1][1]
        
        return n1 + n2 - has

 Insert picture description here
Ideas :
Solve the absolute value equation , Given x
If greater than or equal to x, Make a difference ; If less than x, Then take the sum of this number 0 Distance of
By traversing x, You can get the smallest ans
Be careful , You don't need to calculate every traversal , It only needs - some + Just some , This is the charm of the mixture of absolute value function and traversal

src:

class Solution:
    def minimumRemoval(self, beans: List[int]) -> int:
        #  All become the smallest or Minimal change 0
        beans.sort()
        n = len(beans)
        #print(beans)
        #  Determine a value x, Less than it, add it all , If it is greater than it, take the difference 
        temp = 0
        x = beans[0]
        index = 0
        ans = 0xffffffff
        
        for num in beans:
            temp += num - x
        ans = min(ans, temp)
        
        while index < n:
            nextIndex = index
            while nextIndex < n and beans[nextIndex] == x:
                nextIndex += 1
            if nextIndex >= n:
                break
            temp += x * (nextIndex - index)
            y = beans[nextIndex]
            temp -= (y - x) * (n - nextIndex)
            ans = min(ans, temp)
            
            x = y
            index = nextIndex
        
        return ans

summary :
without bug, Just before 300 了 , It's all because the second question is wrong index

原网站

版权声明
本文为[White speed Dragon King's review]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140232436243.html