Skip to content

Commit 2724be6

Browse files
committed
feat: add solutions to lc problem: No.0888. Fair Candy Swap
1 parent 0ec6f91 commit 2724be6

File tree

5 files changed

+151
-2
lines changed

5 files changed

+151
-2
lines changed

solution/0800-0899/0888.Fair Candy Swap/README.md

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,22 +62,74 @@
6262

6363
<!-- 这里可写通用的实现逻辑 -->
6464

65+
哈希表实现。
66+
6567
<!-- tabs:start -->
6668

6769
### **Python3**
6870

6971
<!-- 这里可写当前语言的特殊实现逻辑 -->
7072

7173
```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]
7382
```
7483

7584
### **Java**
7685

7786
<!-- 这里可写当前语言的特殊实现逻辑 -->
7887

7988
```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+
```
80111

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+
};
81133
```
82134
83135
### **...**

solution/0800-0899/0888.Fair Candy Swap/README_EN.md

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,63 @@
122122
### **Python3**
123123

124124
```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]
126133
```
127134

128135
### **Java**
129136

130137
```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+
```
131160

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+
};
132182
```
133183
134184
### **...**
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
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+
};
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
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]

0 commit comments

Comments
 (0)