问题:存在两个序列,相互交换两个序列中的一个元素后,两序列的和相等

问题:存在两个序列,相互交换两个序列中的一个元素后,两序列的和相等
 1 import java.math.BigDecimal;
 2 import java.util.*;
 3 
 4 /**
 5  * @name: Exchange
 6  * @description: 问题:存在两个序列,相互交换两个序列中的一个元素后,两序列的和相等
 7  *  思路:1.分别求出两个序列的和
 8  *       2.判断是否存在满足(第一个序列和-2*遍历元素值 == 第二个序列和-2*遍历元素值)条件的项
 9  *       3.如果存在2中的项,则交换该两项即可完成
10  * 
11  * @version: v1.0
12  * @create: 2021-01-30 09:33
13  **/
14 
15 public class Exchange {
16 
17     public static void main(String[] args) {
18 
19         Map<Integer,Integer> ones = new HashMap<>();
20         Map<Integer,Integer> twos = new HashMap<>();
21 
22         Scanner scanner = new Scanner(System.in);
23         System.out.println("Input the number of fisrt values");
24         int oneNum = scanner.nextInt();
25         System.out.println("Input the number of  values");
26         for(int i=0;i<oneNum;i++){
27             ones.put(i, scanner.nextInt());
28         }
29 
30         System.out.println("Input the number of second values");
31         int secondNum = scanner.nextInt();
32         System.out.println("Input the number of  values");
33         for(int i=0;i<secondNum;i++){
34             twos.put(i, scanner.nextInt());
35         }
36 
37         Integer sunOne = ones.values().stream().reduce(Integer::sum).get();
38         System.out.println("the fisrt list sum:" + sunOne);
39 
40         Integer sunTwo = twos.values().stream().reduce(Integer::sum).get();
41         System.out.println("the fisrt second sum:" + sunTwo);
42 
43         boolean isExit = false;
44         Set<Map.Entry<Integer, Integer>> oneEntries = ones.entrySet();
45         Set<Map.Entry<Integer, Integer>> twoEntries = twos.entrySet();
46 
47         for(Map.Entry<Integer, Integer> oneSet : oneEntries){
48             for(Map.Entry<Integer, Integer> twoSet : twoEntries){
49                 if (sunOne - 2 * oneSet.getValue() == sunTwo - 2 * twoSet.getValue()) {
50                     System.out.println("exit:" + oneSet.getValue() + "  " + twoSet.getValue());
51                     isExit = true;
52                     Integer tmp = twoSet.getValue();
53                     twoSet.setValue(oneSet.getValue());
54                     oneSet.setValue(tmp);
55                     break;
56                 }
57             }
58             if (isExit) {
59                 break;
60             }
61         }
62 
63         ones.values().forEach(System.out::print);
64         System.out.println();
65         Integer sunOne1 = ones.values().stream().reduce(Integer::sum).get();
66         System.out.println("the fisrt list sum:" + sunOne1);
67 
68 
69         twos.values().forEach(System.out::print);
70         System.out.println();
71         Integer sunTwo1 = twos.values().stream().reduce(Integer::sum).get();
72         System.out.println("the second list sum:" + sunTwo1);
73 
74         if (isExit) {
75             System.out.println("yes");
76         }else {
77             System.out.println("no");
78         }
79     }
80 }
View Code

 

上一篇:调查:过半用户希望公链提升TPS的同时并不降低去中心化程度


下一篇:面试题 public static int getValue