LeetCode —— 1217. Jugando fichas

Descripción del Título:

Algunos chips se colocan en la recta numérica y la posición de cada chip se almacena en la matriz de chips .

Puede realizar una de las siguientes dos operaciones en cualquier chip (no hay límite para el número de operaciones, 0 veces está bien):

  • Método 1: Mueva la ficha i-ésima hacia la izquierda o hacia la derecha en 2 unidades, y el costo es 0.
  • Método 2: Mueva el chip i-ésimo hacia la izquierda o hacia la derecha en 1 unidad a un costo de 1.

Al principio, puede haber dos o más fichas en la misma posición. Devuelve el costo mínimo requerido para mover todas las fichas a la misma posición (cualquier posición).

提示 :
1 <= chips.length <= 100
1 <= chips [i] <= 10 ^ 9

Ejemplo 1:
Entrada: chips = [1,2,3]
Salida: 1
Explicación: El costo de mover el segundo chip a la posición tres es 1, el costo de mover el primer chip a la posición tres es 0 y el costo total es 1.

Ejemplo 2:
Entrada: chips = [2,2,2,3,3]
Salida: 2
Explicación: El costo de mover el cuarto y quinto chips a la posición dos es 1, por lo que el costo total mínimo es 2.

Algoritmo codicioso: ideas para resolver problemas

Para asegurar que el valor del costo total sea el más pequeño, para cada selección de movimiento, si podemos elegir un modo de movimiento con un costo de 0 (modo 1), nunca elegiremos un modo de movimiento con un costo de 1 (modo 2). ). Por lo tanto, tratamos de mover tantas fichas juntas como sea posible mediante el primer método, y cuando las fichas restantes ya no se puedan mover a la misma posición mediante el primer método, intentamos usar la menor cantidad de veces para mover el segundo.
Ley : Podemos mover todas las fichas impares a la misma posición (indicada como posición A), y al mismo tiempo podemos mover todas las fichas pares a la misma posición (indicada como posición B), y la posición A y la posición B puede estar en el eje numérico Dos posiciones adyacentes cualesquiera (es decir | AB | = 1, son adyacentes, porque las posiciones adyacentes se mueven la menor cantidad de veces. Por conveniencia, moveremos uniformemente las fichas impares a la posición [1 ], Mueva las fichas pares a la posición [2]).
Todas las fichas impares se pueden mover a la posición [1] en N veces, y todas las fichas pares se pueden mover a la posición [1] en M veces. [2]. Aquí, el costo total es 0, y luego use el método dos de K veces para mover la pila con el menor número de fichas a la otra pila. K es mínimo (posición [1], posición [2] ). El número de fichas en la posición [1] y la posición [2] es en realidad el número de fichas en la posición impar y el número de fichas en la posición par en la matriz de posiciones.

el código se muestra a continuación:

class Solution {
    
    
    public int minCostToMoveChips(int[] position) {
    
    
        int n = position.length;
        int a = 0, b = 0;
        for (int m : position) {
    
    
            if (m % 2 == 0) {
    
    
                a++;
            } else {
    
    
                b++;
            }
        }
        return a > b ? b : a;
    }   
}

Resultados de la:
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/FYPPPP/article/details/114302657
Recomendado
Clasificación