[Algoritmo] El juego semanal número 280 de Lituo (código más corto)

2169. Operando obtenido de 0

simulación, solución de dos líneas

class Solution:
    def countOperations(self, num1: int, num2: int,cnt:int =1) -> int:
        while num1!=0 and num2!=0 and (cnt:=cnt+1):num1,num2=min(num1,num2),max(num1,num2)-min(num1,num2)    
        return cnt-1

2170. Número mínimo de operaciones para convertir una matriz en una matriz alternativa

Hash, se puede discutir la categoría más grande y la segunda más grande, solución de tres líneas

class Solution(object):
    def minimumOperations(self, nums):
        c1,c2,n = Counter(nums[::2]),Counter(nums[1::2]),len(nums)
        m1,m2 = c1.most_common(2),c2.most_common(2)
        return 0 if n==1 else (n-m1[0][1]-m2[0][1] if m1[0][0]!=m2[0][0] else min(n - m1[0][1] - (0 if len(m2)==1 else m2[1][1]), n - m2[0][1] - (0 if len(m1)==1 else m1[1][1])))

2771. Saca la menor cantidad de frijoles mágicos

La solución de dos líneas de Cocoa

class Solution:
    def minimumRemoval(self, beans: List[int]) -> int:
        n,res,t,sorted_beans = len(beans),sum(beans),sum(beans),sorted(beans)
        return min(t-(n-i)*sorted_beans[i] for i in range(n))

Solución de una línea del jefe de la montaña Lingcha

class Solution:
    def minimumRemoval(self, beans: List[int]) -> int:
        return sum(beans) - max((len(beans) - i) * v for i, v in enumerate(sorted(beans)))

2172. Suma máxima de arreglos

La solución súper mágica de tres líneas, las palabras originales del jefe de seis cuerdas:

Piense en la coincidencia de peso máximo del gráfico bipartito y luego encuentre una plantilla

import numpy as np
from scipy.optimize import linear_sum_assignment
class Solution:
    def maximumANDSum(self, nums: List[int], ns: int) -> int:
        nums, slots, mx = nums + [0] * (2 * ns - len(nums)), [*range(1, ns + 1)] * 2, np.zeros((ns * 2, ns * 2))
        for (i, x), (j, sn) in product(enumerate(nums), enumerate(slots)): mx[i, j] = x & sn
        return int(mx[linear_sum_assignment(-mx)].sum())

Resumir

Las tres primeras preguntas son gratis + la cuarta pregunta está sancionada
La cantidad total de código: 2+3+1+3, ¡nueve líneas de código para completar una competencia semanal!

Supongo que te gusta

Origin blog.csdn.net/weixin_45825073/article/details/122919608
Recomendado
Clasificación