砖墙

2020-04-07  本文已影响0人  MrHitchcock

  1. 利用哈希表,key为每行元素依次累加的和,value为相同和的频次
  2. 注意排除每行最后一个元素,因为边界不包括在内
  3. 最后结果为输入列表长度 - value
public class Solution {
    public int leastBricks(List < List < Integer >> wall) {
        HashMap < Integer, Integer > map = new HashMap < > ();
        for (List < Integer > row: wall) {
            int sum = 0;
            for (int i = 0; i < row.size() - 1; i++) {
                sum += row.get(i);
                if (map.containsKey(sum))
                    map.put(sum, map.get(sum) + 1);
                else
                    map.put(sum, 1);
            }
        }
        int res = wall.size();
        for (int key: map.keySet())
            res = Math.min(res, wall.size() - map.get(key));
        return res;
    }
}

Tips:

上一篇下一篇

猜你喜欢

热点阅读