[leetcode] 1005. Maximizar la suma de la matriz después de K negaciones

Descripción

Dada una matriz A de enteros, debemos modificar la matriz de la siguiente manera: elegimos una i y reemplazamos A [i] con -A [i], y repetimos este proceso K veces en total. (Podemos elegir el mismo índice i varias veces).

Devuelve la mayor suma posible de la matriz después de modificarla de esta manera.

Ejemplo 1:

Input: A = [4,2,3], K = 1
Output: 5
Explanation: Choose indices (1,) and A becomes [4,-2,3].

Ejemplo 2:

Input: A = [3,-1,0,2], K = 3
Output: 6
Explanation: Choose indices (1, 2, 2) and A becomes [3,1,0,2].

Ejemplo 3:

Input: A = [2,-3,-1,5,-4], K = 2
Output: 13
Explanation: Choose indices (1, 4) and A becomes [2,3,-1,5,4].

Nota:

  • 1 <= A. longitud <= 10000
  • 1 <= K <= 10000
  • -100 <= A [i] <= 100

análisis

El significado de la pregunta es: dada la matriz A, reemplace el número en ella por el número opuesto, y el mismo número se puede reemplazar infinitas veces.

  • Este problema necesita usar el montón más pequeño, cada vez que se saca el número más pequeño y luego se convierte en el número opuesto, de modo que la suma de la matriz resultante sea la más grande.

Código

class Solution:
    def largestSumAfterKNegations(self, A: List[int], K: int) -> int:
        res=sum(A)
        heapq.heapify(A)
        while(K>0):
            cur=heapq.heappop(A)
            heapq.heappush(A,-cur)
            K-=1
            res=res-cur+(-cur)
        return res

referencias

【LeetCode】 1005. Maximizar la suma de la matriz después de K Negaciones Informe de resolución de problemas (Python)

Supongo que te gusta

Origin blog.csdn.net/w5688414/article/details/115046031
Recomendado
Clasificación