1.车站买票
思路:车站上一个人和下一个人可以抵消
最多多少辆车=累加连续的上车人数>0的总人数/每个车的载人数
public int minCarCount(int[][] trips, int capacity) { int n = trips.length; // 上一个人 下一个人抵消 Map<Integer, Integer> dict = new TreeMap<>(); for (int i = 0; i < n; i++) { int people = trips[i][0]; int start = trips[i][1]; int end = trips[i][2]; dict.put(start, dict.getOrDefault(start, 0) + people); dict.put(end, dict.getOrDefault(start, 0) - people); } int max = 0, sum = 0; for (Map.Entry<Integer, Integer> e : dict.entrySet()) { sum += e.getValue(); max = Math.max(max, sum); } return max / capacity + (max % capacity == 0 ? 0 : 1); }2.打怪升级
思路:暴力遍历所有可能,可以重复通关
public int maxLevel(int x, int level, int[][] tasks) { if (x == 0) return level; int n = tasks.length; int max = 0; for (int i = 0; i < n; i++) { if (level >= tasks[i][0]) max = Math.max(max, maxLevel(x - 1, level + tasks[i][1], tasks)); } return max; }
全部评论
(0) 回帖