跳转至

2363. 合并相似的物品

题目描述

原题

题解

class Solution {
    public List<List<Integer>> mergeSimilarItems(int[][] items1, int[][] items2) {
        List<List<Integer>> result = new ArrayList<>();
        //因为是升序 所以要使用TreeMap进行排序
        Map<Integer,Integer> map = new TreeMap<>();
        for(int[] items:items1){
            int value = items[0];
            int weight = items[1];
            int sum = map.getOrDefault(value,0) + weight;
            map.put(value,sum);
        }
        for(int[] items:items2){
            int value = items[0];
            int weight = items[1];
            int sum = map.getOrDefault(value,0) + weight;
            map.put(value,sum);
        }
        for(int key:map.keySet()){
            List<Integer> list = new ArrayList<>();
            list.add(key);
            list.add(map.get(key));
            result.add(list);
        }
        return result;
    }
}

代码优化

class Solution {
    public List<List<Integer>> mergeSimilarItems(int[][] items1, int[][] items2) {
        List<List<Integer>> result = new ArrayList<>();
        Map<Integer,Integer> map = new TreeMap<>();
        for(int[] items:items1){
            map.put(items[0], map.getOrDefault(items[0],0)+items[1]);
        }
        for(int[] items:items2){
            map.put(items[0],map.getOrDefault(items[0],0)+items[1]);
        }
        for(Map.Entry<Integer,Integer> entry:map.entrySet()){
            List<Integer> list = new ArrayList<>();
            list.add(entry.getKey());
            list.add(entry.getValue());
            result.add(list);
        }
        return result;
    }
}