The max number of bricks to cross is the number of rows, whenever we see a edge, the number of crossed bricks reduce by 1. Thus we just need keep track of the location where we see maximum number of edges.

```
public int leastBricks(List<List<Integer>> wall) {
HashMap<Integer, Integer> map = new HashMap<>();
int max = 0;
for (int i = 0; i < wall.size(); i++) {
List<Integer> row = wall.get(i);
int edge = 0;
for (int j = 0; j < row.size()-1; j++) {
edge += row.get(j);
int count = map.getOrDefault(edge, 0)+1;
map.put(edge, count);
max = Math.max(max, count);
}
}
return wall.size()-max;
}
```

Using buckets to store all the x coordinates leads to MLE, which is intentionally designed by OJ.