LeetCode554. 砖墙(Java HashMap 统计前缀和)

554. 砖墙(Java HashMap 统计前缀和)

链接:https://leetcode-cn.com/problems/brick-wall/solution/554-zhuan-qiang-java-hashmap-tong-ji-qia-ol5r/

解题思路
用HashMap来统计 key 为 边界下标, value 为 key为边界的次数
统计出来后遍历,找到出现次数最多的边界
用n-这个数 就是 答案

class Solution {
    public int leastBricks(List<List<Integer>> wall) {
        int n = wall.size();
		//key为边界下标,value为key作为边界下标的次数
		HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
		//统计key作为边界的次数
		for(int i = 0; i < n; i++) {
			int edge = 0;
			//遍历的时候注意:j < wall.get(i).size()-1 而不是wall.get(i).size()
			for(int j = 0; j < wall.get(i).size()-1; j++) {
				edge += wall.get(i).get(j);
				if(map.containsKey(edge)) {
					map.put(edge, map.get(edge)+1);
				} else {
					map.put(edge, 1);
				}
			}
		}
		//遍历
		Iterator iter = map.entrySet().iterator();
		int max = 0;
		while(iter.hasNext()) {
			Map.Entry<Integer, Integer> entry = (Map.Entry<Integer, Integer>) iter.next();
			Integer value = entry.getValue();
			max = Math.max(value, max);
		}
		return n-max;
    }
}

上一篇:[洛谷P1707] 刷题比赛


下一篇:Smash-wall-install