File tree Expand file tree Collapse file tree 5 files changed +151
-2
lines changed
solution/0800-0899/0888.Fair Candy Swap Expand file tree Collapse file tree 5 files changed +151
-2
lines changed Original file line number Diff line number Diff line change 62
62
63
63
<!-- 这里可写通用的实现逻辑 -->
64
64
65
+ 哈希表实现。
66
+
65
67
<!-- tabs:start -->
66
68
67
69
### ** Python3**
68
70
69
71
<!-- 这里可写当前语言的特殊实现逻辑 -->
70
72
71
73
``` python
72
-
74
+ class Solution :
75
+ def fairCandySwap (self , aliceSizes : List[int ], bobSizes : List[int ]) -> List[int ]:
76
+ diff = (sum (aliceSizes) - sum (bobSizes)) >> 1
77
+ s = set (bobSizes)
78
+ for a in aliceSizes:
79
+ target = a - diff
80
+ if target in s:
81
+ return [a, target]
73
82
```
74
83
75
84
### ** Java**
76
85
77
86
<!-- 这里可写当前语言的特殊实现逻辑 -->
78
87
79
88
``` java
89
+ class Solution {
90
+ public int [] fairCandySwap (int [] aliceSizes , int [] bobSizes ) {
91
+ int s1 = 0 , s2 = 0 ;
92
+ Set<Integer > s = new HashSet<> ();
93
+ for (int a : aliceSizes) {
94
+ s1 += a;
95
+ }
96
+ for (int b : bobSizes) {
97
+ s. add(b);
98
+ s2 += b;
99
+ }
100
+ int diff = (s1 - s2) >> 1 ;
101
+ for (int a : aliceSizes) {
102
+ int target = a - diff;
103
+ if (s. contains(target)) {
104
+ return new int []{a, target};
105
+ }
106
+ }
107
+ return null ;
108
+ }
109
+ }
110
+ ```
80
111
112
+ ### ** C++**
113
+
114
+ ``` cpp
115
+ class Solution {
116
+ public:
117
+ vector<int > fairCandySwap(vector<int >& aliceSizes, vector<int >& bobSizes) {
118
+ int s1 = accumulate(aliceSizes.begin(), aliceSizes.end(), 0);
119
+ int s2 = accumulate(bobSizes.begin(), bobSizes.end(), 0);
120
+ int diff = (s1 - s2) >> 1;
121
+ unordered_set<int > s(bobSizes.begin(), bobSizes.end());
122
+ vector<int > ans;
123
+ for (int& a : aliceSizes) {
124
+ int target = a - diff;
125
+ if (s.count(target)) {
126
+ ans = vector<int >{a, target};
127
+ break;
128
+ }
129
+ }
130
+ return ans;
131
+ }
132
+ };
81
133
```
82
134
83
135
### **...**
Original file line number Diff line number Diff line change 122
122
### ** Python3**
123
123
124
124
``` python
125
-
125
+ class Solution :
126
+ def fairCandySwap (self , aliceSizes : List[int ], bobSizes : List[int ]) -> List[int ]:
127
+ diff = (sum (aliceSizes) - sum (bobSizes)) >> 1
128
+ s = set (bobSizes)
129
+ for a in aliceSizes:
130
+ target = a - diff
131
+ if target in s:
132
+ return [a, target]
126
133
```
127
134
128
135
### ** Java**
129
136
130
137
``` java
138
+ class Solution {
139
+ public int [] fairCandySwap (int [] aliceSizes , int [] bobSizes ) {
140
+ int s1 = 0 , s2 = 0 ;
141
+ Set<Integer > s = new HashSet<> ();
142
+ for (int a : aliceSizes) {
143
+ s1 += a;
144
+ }
145
+ for (int b : bobSizes) {
146
+ s. add(b);
147
+ s2 += b;
148
+ }
149
+ int diff = (s1 - s2) >> 1 ;
150
+ for (int a : aliceSizes) {
151
+ int target = a - diff;
152
+ if (s. contains(target)) {
153
+ return new int []{a, target};
154
+ }
155
+ }
156
+ return null ;
157
+ }
158
+ }
159
+ ```
131
160
161
+ ### ** C++**
162
+
163
+ ``` cpp
164
+ class Solution {
165
+ public:
166
+ vector<int > fairCandySwap(vector<int >& aliceSizes, vector<int >& bobSizes) {
167
+ int s1 = accumulate(aliceSizes.begin(), aliceSizes.end(), 0);
168
+ int s2 = accumulate(bobSizes.begin(), bobSizes.end(), 0);
169
+ int diff = (s1 - s2) >> 1;
170
+ unordered_set<int > s(bobSizes.begin(), bobSizes.end());
171
+ vector<int > ans;
172
+ for (int& a : aliceSizes) {
173
+ int target = a - diff;
174
+ if (s.count(target)) {
175
+ ans = vector<int >{a, target};
176
+ break;
177
+ }
178
+ }
179
+ return ans;
180
+ }
181
+ };
132
182
```
133
183
134
184
### **...**
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ vector<int > fairCandySwap (vector<int >& aliceSizes, vector<int >& bobSizes) {
4
+ int s1 = accumulate (aliceSizes.begin (), aliceSizes.end (), 0 );
5
+ int s2 = accumulate (bobSizes.begin (), bobSizes.end (), 0 );
6
+ int diff = (s1 - s2) >> 1 ;
7
+ unordered_set<int > s (bobSizes.begin (), bobSizes.end ());
8
+ vector<int > ans;
9
+ for (int & a : aliceSizes) {
10
+ int target = a - diff;
11
+ if (s.count (target)) {
12
+ ans = vector<int >{a, target};
13
+ break ;
14
+ }
15
+ }
16
+ return ans;
17
+ }
18
+ };
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public int [] fairCandySwap (int [] aliceSizes , int [] bobSizes ) {
3
+ int s1 = 0 , s2 = 0 ;
4
+ Set <Integer > s = new HashSet <>();
5
+ for (int a : aliceSizes ) {
6
+ s1 += a ;
7
+ }
8
+ for (int b : bobSizes ) {
9
+ s .add (b );
10
+ s2 += b ;
11
+ }
12
+ int diff = (s1 - s2 ) >> 1 ;
13
+ for (int a : aliceSizes ) {
14
+ int target = a - diff ;
15
+ if (s .contains (target )) {
16
+ return new int []{a , target };
17
+ }
18
+ }
19
+ return null ;
20
+ }
21
+ }
Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def fairCandySwap (self , aliceSizes : List [int ], bobSizes : List [int ]) -> List [int ]:
3
+ diff = (sum (aliceSizes ) - sum (bobSizes )) >> 1
4
+ s = set (bobSizes )
5
+ for a in aliceSizes :
6
+ target = a - diff
7
+ if target in s :
8
+ return [a , target ]
You can’t perform that action at this time.
0 commit comments