(Java) leetcode-554 Pared de ladrillos

título

【】砖墙
La pared de ladrillo está representado por una lista de filas. Cada fila es una lista de números enteros que representan el ancho de cada ladrillo en esta fila de izquierda a derecha.

Si la línea pasa por el borde de un ladrillo, el ladrillo no se considera como cruzados. Es necesario encontrar la manera de dibujar la línea para cruzar los menos ladrillos y devolver el número de ladrillos cruzados.

No se puede dibujar una línea a lo largo de solo uno de los dos bordes verticales de la pared, en cuyo caso la línea, obviamente, no cruzar los ladrillos.

Ejemplo:

Entrada: [[1,2,2,1],
[3,1,2],
[1,3,2],
[2,4],
[3,1,2],
[1,3,1, 1]]

Salida: 2

Explicación:
Aquí Insertar imagen Descripción
Nota:

La suma anchura de ladrillos de diferentes filas son los mismos y no excederá INT_MAX.
El número de ladrillos en cada fila está en el rango [1,10,000]. La altura de la pared está en el rango [1,10,000]. Número total de ladrillos de la pared no será superior a 20.000.

pensamiento

对墙中所有可能的缝隙长度(该缝隙到达最左边缘的长度)进行计数。
某长度以及对应出现的次数作为<key,value>维护到map中。
最后出现次数最多的长度就是画线的最佳位置(说明此位置缝隙最多,换言之,穿过的砖头最少)

código

class Solution {

    public int leastBricks(List<List<Integer>> wall) {
       if(wall.size() == 0) return 0;      
        int count = 0;
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        // 遍历每一行
        for(List<Integer> list : wall){
            int length = 0;
            // 对所有出现的长度计数并更新到map中
            for(int i = 0; i < list.size() - 1; i++){ //不考虑最右边的砖
                length += list.get(i);
                map.put(length, map.getOrDefault(length, 0) + 1);
                // 更新穿过最多的缝隙数
                count = Math.max(count, map.get(length));
            }
        }
        // 穿过的砖数 = 总行数 - 穿过的缝隙数
        return wall.size() - count; 
    }
}

Presentar los resultados

Aquí Insertar imagen Descripción

Publicados 143 artículos originales · ganado elogios 45 · Vistas a 70000 +

Supongo que te gusta

Origin blog.csdn.net/z714405489/article/details/103157632
Recomendado
Clasificación