题目描述
一条单链表可以表示一个一元多项式,每个节点包含三个域:指数、系数和后继节点(指针或引用)。
表示多项式3X4-6X2+5X-10的单链表如图所示。给定两个多项式,实现两个多项式相加算法。
输入
第一行输入包含两个整数m,n
后续为m行和n行数据
m,n分别代表两个多项式的项数
后续每一行代表多项式的项,包含a,b两个数据,表示该项的系数和指数。
输出
从较高指数到较低指数,依次输出求得的和。
每行一项,格式与输入相同,但无需输出项数,系数为0的项也不输出。
样例输入复制
2 3 1 2 1 1 2 2 1 1 2 0
样例输出复制
3 2 2 1 2 0
import java.util.*;
public class Main {
public static void main(String[] args) {
int m = cin.nextInt();
int n = cin.nextInt();
Map<Integer, Integer> map = new TreeMap<>((o1, o2) -> (o2 - o1));
int a, b;
for (int i = 0; i < m; i++) {
a = cin.nextInt();
b = cin.nextInt();
map.put(b, a);
}
for (int i = 0; i < n; i++) {
a = cin.nextInt();
b = cin.nextInt();
if (map.containsKey(b)) {
a += map.get(b);
}
map.put(b, a);
}
for (int i : map.keySet()) {
if (map.get(i) != 0) System.out.println(map.get(i) + " " + i);
}
}
static Scanner cin = new Scanner(System.in);
}