首页 > 试题广场 >

合并表记录

[编程题]合并表记录
  • 热度指数:767044 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。


提示:
0 <= index <= 11111111
1 <= value <= 100000


输入描述:

先输入键值对的个数n(1 <= n <= 500)
接下来n行每行输入成对的index和value值,以空格隔开



输出描述:

输出合并后的键值对(多行)

示例1

输入

4
0 1
0 2
1 2
3 4

输出

0 3
1 2
3 4
示例2

输入

3
0 1
0 2
8 9

输出

0 3
8 9
排行里那些用数组实现的代码是怎么测过的?index比个数大不报错吗?
发表于 2024-11-03 16:34:44 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        HashMap<Integer, Integer> map = new HashMap<>();

        for (int i = 0; i < n; i++) {
            int index = scanner.nextInt();
            int value = scanner.nextInt();
            map.put(index, map.getOrDefault(index, 0) + value);
        }

        // 将map转换为树状结构,以便按照索引排序
        List<Map.Entry<Integer, Integer>> sortedEntries = new ArrayList<>
        (map.entrySet());
        sortedEntries.sort(Map.Entry.comparingByKey());

        for (Map.Entry<Integer, Integer> entry : sortedEntries) {
            System.out.println(entry.getKey() + " " + entry.getValue());
        }
        scanner.close();
    }
}

发表于 2024-10-18 23:05:31 回复(0)
import java.util.Scanner;

import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Map<Integer,Integer> map = new TreeMap<>();
        while (in.hasNextInt()) {
            int num = in.nextInt();
            for(int i = 0;i < num;i++){
                int key = in.nextInt();
                int value = in.nextInt();
                if(map.keySet().contains(key)){
                    map.put(key,map.get(key)+value);
                }else{
                    map.put(key,value);
                }
            }
        }
        map.keySet().forEach(key ->{
            System.out.println(key+" "+map.get(key));
        });
    }
}
发表于 2024-09-12 13:52:33 回复(0)
import java.util.Scanner;
import java.util.TreeMap;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int count = in.nextInt();
        int key;
        int value;
        TreeMap<Integer,Integer> TreeMap = new TreeMap<>();
        for (int i = 1; i <= count; i++ ) {
            key=in.nextInt();
            value=in.nextInt();
            if (TreeMap.get(key)==null) {
                TreeMap.put(key,value);
            } else {
                value=TreeMap.get(key)+value;
                TreeMap.put(key,value);
            }
        }
        for (int getKey : TreeMap.keySet()) {
            System.out.println(getKey + " " + TreeMap.get(getKey));
        }
    }
}

发表于 2024-09-11 21:49:43 回复(0)
import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int count = in.nextInt();
            Map<Integer, Integer> m =  new TreeMap<>();
            for (int i=0; i<count; i++) {
                int index = in.nextInt();
                int value = in.nextInt();
                if (m.containsKey(index)) {
                    m.put(index, value + m.get(index));
                } else {
                    m.put(index, value);
                }
            }
        for (Map.Entry<Integer, Integer> entry : m.entrySet()) {
            Integer key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println(key + " " + value);
        }

        }
    }
}
发表于 2024-09-06 15:09:40 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Map<Integer, Integer> map = new TreeMap<>();
        int rows = scanner.nextInt();
        for (int i = 0; i < rows; i++) {
            int index = scanner.nextInt();
            int value = scanner.nextInt();
            if (map.containsKey(index)) {
                map.put(index, map.get(index) + value);
            }else {
                map.put(index, value);
            }
        }
        for (Integer index : map.keySet()) {
            System.out.println(index + " " + map.get(index));
        }
    }
}

发表于 2024-07-02 21:27:24 回复(1)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int[][] array = null;
        int linecnt = 1;
        int cnt = Integer.MAX_VALUE;
        int index;
        int v;
        String line;
        String[] lineArr;
        int fromIndex = 0;
        int[] temp;
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            if (linecnt == 1) {
                cnt = in.nextInt();
                array = new int[cnt][];

            } else {
                line = in.nextLine();
                if ("".equals(line)) {
                    continue;
                }
                lineArr = line.split(" ");
                index = Integer.parseInt(lineArr[0]);

                if (index > array.length - 1) {
                    fromIndex = array.length - 1;
                } else {
                    fromIndex = index;
                }
                v = Integer.parseInt(lineArr[1]);

                for (int i = fromIndex; i >= 0; i--) {
                    temp = array[i];
                    if (temp == null) {
                        temp = new int[2];
                        temp[0] = index;
                        temp[1] = v;
                        array[i] = temp;
                        break;
                    }
                    if (temp[0] == index) {
                        temp[1] = temp[1] + v;
                        break;
                    } else {
                        temp[0] = temp[0] ^ index;
                        index = temp[0] ^ index;
                        temp[0] = temp[0] ^ index;
                        temp[1] = temp[1] ^ v;
                        v = temp[1] ^ v;
                        temp[1] = temp[1] ^ v;
                    }
                }
            }

            if (linecnt > cnt) {
                break;
            }

            linecnt ++;
        }

        for (int i = 0; i < array.length; i++) {
            if (array[i] != null) {
                System.out.println(array[i][0] + " " + array[i][1]);
            }
        }
    }
}

发表于 2024-06-19 06:37:22 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[][] index = new int[12][1000000];
        while(n>0){
            int i = in.nextInt();
            int v = in.nextInt();
            index[i%12][i/12] += v;
            n--;
        }
        for(int i=0;i<=11111111;i++){
            if(index[i%12][i/12]!=0){
                System.out.println(i+" "+index[i%12][i/12]);
            }
        }
    }
}
发表于 2024-05-23 16:16:28 回复(1)
import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        while (input.hasNext()) {
            int num = input.nextInt();
            //定义map树,定义key-value
            TreeMap<Integer, Integer> map = new TreeMap();
            int index, value;
            for (int i = 0; i < num; i++) {
                index = input.nextInt();
                value = input.nextInt();
                //判断index是否已经存在,若存在,value相加,所不存在,向map中添加index,value
                if (map.containsKey(index)) {
                    map.put(index, map.get(index) + value);
                } else
                    map.put(index, value);
            }
            //输出
            for (Map.Entry<Integer, Integer>entry : map.entrySet()) {
                System.out.println(entry.getKey() + " " + entry.getValue());
            }
        }
    }
}

发表于 2024-05-15 22:33:44 回复(0)
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        Scanner in2 = new Scanner(System.in);

        Map<Integer, Integer> map = new TreeMap<Integer, Integer>();
        for (int i = 0; i < n; i++) {
            String line = in2.nextLine();
            String[] strs = line.split(" ");
            Integer a = Integer.valueOf(strs[0]);
            Integer b = Integer.valueOf(strs[1]);
            map.put(a, map.getOrDefault(a, 0) + b);
        }

        map.forEach((k, v)->System.out.println(k + " " + v));

    }
}

这个题有问题,每行输入用空格隔开,实际则是每个数字输入后回车
发表于 2024-04-26 11:11:19 回复(1)
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Integer num = in.nextInt();
        Map<Integer,Integer> map = new TreeMap<>();
        for (int i = 0; i < num; i++) {
            if (i == 0) {
                map.put(in.nextInt(),in.nextInt());
            } else {
                Integer one = in.nextInt();
                Integer two = in.nextInt();

                if (map.containsKey(one)) {
                    map.put(one,map.get(one) + two);
                } else {
                    map.put(one,two);
                }
            }
        }
        for (Integer key : map.keySet()) {
            System.out.println(key + " " + map.get(key));
        }
    }

编辑于 2024-04-22 16:36:57 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int index = 0;
        int value = 0;
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < n; i++) {
            index = sc.nextInt();
            value = sc.nextInt();
            if (map.containsKey(index)) {
                int val = map.get(index);
                val += value;
                map.put(index, val);
            } else {
                map.put(index, value);
            }
        }
        Set<Integer> keySet = map.keySet();
        Set<Integer> kSet = new TreeSet<>(keySet);
        for (Integer key : kSet) {
            System.out.println(key + " " + map.get(key));
        }
    }
}
编辑于 2024-04-15 18:10:41 回复(0)
Scanner in = new Scanner(System.in);
        var n = in.nextLine();
        var line=Integer.parseInt(n);
        if (line<=0||line > 500) {
            System.out.println("超过输入范围,0~500");
            return;
        }
        Map<Integer, Integer> map = new TreeMap<>();
        for (int i = 0; i < line; i++) {
            var str = in.nextLine();
            var strArr = str.split(" ");
            if (strArr.length != 2) {
                System.out.println("输入格式有误");
                return;
            }
            var index = Integer.parseInt(strArr[0]);
            var value = Integer.parseInt(strArr[1]);
            if (index < 0 || index > 11111111) {
                System.out.println("index超过输入范围,0~111111");
            }
            if (value<0||value>100000){
                System.out.println("value超过输入范围,0~100000");
            }
            if (map.containsKey(index)) {
                map.put(index, map.get(index) + value);
            } else {
                map.put(index, value);
            }
        }
        map.forEach((k, v) -> System.out.println(k + " " + v));

发表于 2024-03-27 10:22:24 回复(1)
import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        Map<Integer,Integer> map = new HashMap<>(n);
        for(int i=0 ;i<n;i++){
            int key = in.nextInt();
            int value = in.nextInt();
            if(map.containsKey(key)){
                map.put(key,map.get(key) + value);

            }else {
                map.put(key,value);
            }
        }
        for(Integer key : map.keySet()){
            System.out.println(key+ " "+map.get(key));
        }
    }
}
HashMap实例化时,
        Map<Integer,Integer> map = new HashMap<>(n);
去掉指定表长的n时,有两例结果通过不了。能解答一下吗?
编辑于 2024-03-18 17:02:17 回复(0)

问题信息

难度:
272条回答 105690浏览

热门推荐

通过挑战的用户

查看代码
合并表记录