30
30
31
31
<!-- 这里可写通用的实现逻辑 -->
32
32
33
- 先计算两个数组的差值 ` diff ` ,若 ` diff ` 为奇数,则说明无满足条件的数值,返回空数组。否则,将 ` array2 ` 转为 ` set ` 。然后遍历 ` array1 ` 中的每个数 ` e ` ,若值 ` e - diff` 在 ` set ` 中,则说明找到满足条件的数值对。
33
+ 先计算两个数组的差值 ` diff ` ,若 ` diff ` 为奇数,则说明无满足条件的数值,返回空数组。否则,将 ` array2 ` 转为 ` set ` 。然后遍历 ` array1 ` 中的每个数 ` a ` ,若值 ` a - diff` 在 ` set ` 中,则说明找到满足条件的数值对。
34
34
35
35
<!-- tabs:start -->
36
36
42
42
class Solution :
43
43
def findSwapValues (self , array1 : List[int ], array2 : List[int ]) -> List[int ]:
44
44
diff = sum (array1) - sum (array2)
45
- if diff & 1 : return []
45
+ if diff & 1 :
46
+ return []
46
47
diff >>= 1
47
48
s = set (array2)
48
- for e in array1:
49
- if (e - diff) in s: return [e, e - diff]
49
+ for a in array1:
50
+ b = a - diff
51
+ if b in s:
52
+ return [a, b]
50
53
return []
51
54
```
52
55
@@ -57,28 +60,86 @@ class Solution:
57
60
``` java
58
61
class Solution {
59
62
public int [] findSwapValues (int [] array1 , int [] array2 ) {
60
- int diff = sum(array1) - sum(array2);
63
+ int s1 = 0 , s2 = 0 ;
64
+ Set<Integer > s = new HashSet<> ();
65
+ for (int a : array1) {
66
+ s1 += a;
67
+ }
68
+ for (int b : array2) {
69
+ s. add(b);
70
+ s2 += b;
71
+ }
72
+ int diff = s1 - s2;
61
73
if ((diff & 1 ) == 1 ) {
62
74
return new int []{};
63
75
}
64
76
diff >> = 1 ;
65
- Set< Integer > s = Arrays . stream(array2) . boxed() . collect( Collectors . toSet());
66
- for ( int e : array1) {
67
- if (s. contains((e - diff) )) {
68
- return new int []{e, e - diff };
77
+ for ( int a : array1) {
78
+ int b = a - diff;
79
+ if (s. contains(b )) {
80
+ return new int []{a, b };
69
81
}
70
82
}
71
83
return new int []{};
72
84
}
85
+ }
86
+ ```
73
87
74
- private int sum (int [] array ) {
75
- int res = 0 ;
76
- for (int e : array) {
77
- res += e;
88
+ ### ** C++**
89
+
90
+ ``` cpp
91
+ class Solution {
92
+ public:
93
+ vector<int > findSwapValues(vector<int >& array1, vector<int >& array2) {
94
+ int s1 = 0, s2 = 0;
95
+ unordered_set<int > s;
96
+ for (int a : array1) s1 += a;
97
+ for (int b : array2) {
98
+ s2 += b;
99
+ s.insert(b);
100
+ }
101
+ int diff = s1 - s2;
102
+ if (diff & 1) {
103
+ return {};
78
104
}
79
- return res;
105
+ diff >>= 1;
106
+ for (int a : array1) {
107
+ int b = a - diff;
108
+ if (s.count(b)) {
109
+ return {a, b};
110
+ }
111
+ }
112
+ return {};
80
113
}
81
- }s
114
+ };
115
+ ```
116
+
117
+ ### **Go**
118
+
119
+ ```go
120
+ func findSwapValues(array1 []int, array2 []int) []int {
121
+ s1, s2 := 0, 0
122
+ for _, a := range array1 {
123
+ s1 += a
124
+ }
125
+ s := make(map[int]bool)
126
+ for _, b := range array2 {
127
+ s2 += b
128
+ s[b] = true
129
+ }
130
+ diff := s1 - s2
131
+ if (diff & 1) == 1 {
132
+ return []int{}
133
+ }
134
+ diff >>= 1
135
+ for _, a := range array1 {
136
+ b := a - diff
137
+ if s[b] {
138
+ return []int{a, b}
139
+ }
140
+ }
141
+ return []int{}
142
+ }
82
143
```
83
144
84
145
### ** ...**
0 commit comments