Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitdd6a040

Browse files
committed
Fix leetcode daily problem
1 parent5cc674a commitdd6a040

File tree

2 files changed

+2
-92
lines changed

2 files changed

+2
-92
lines changed

‎leetcode-solutions/0371-Sum-Of-Two-Integers-两整数之和.md

Lines changed: 1 addition & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
##题解
44

5-
6-
75
题目要求不能使用 $+、-$​,自然想到使用其他的二元运算符,我们可以根据二进制位,选择位运算符计算得到两数之和。
86

97
**二进制相加,思想类似于十进制加法,但从「逢十进一」变为 「逢二进一」。**
@@ -18,11 +16,8 @@
1816
0 + 1 = 1
1917
2018
0 + 0 = 0
21-
2219
```
2320

24-
25-
2621
直接使用异或 ^ 运算符的话,需要额外处理进位的情况, 即两个二进制位都为1。
2722

2823
我们可以使用 bit位为进位符,来判断这种情况。
@@ -36,41 +31,25 @@
3631
```
3732
bit = 0 的情况
3833
39-
40-
4134
二进制位相加 运算后结果
4235
43-
44-
4536
1 + 1 = 0 (进位) --> 答案加 0 bit=1
46-
4737
1 + 0 = 1 --> 答案加 2^i bit=0
48-
4938
0 + 1 = 1 --> 答案加 2^i bit=0
50-
5139
0 + 0 = 0 --> 答案加 2^i bit=0
52-
5340
```
5441

5542

5643

5744
```
5845
bit = 1 的情况
5946
60-
61-
6247
二进制位相加 运算后结果
6348
64-
65-
6649
1 + 1 = 0 (进位) --> 答案加 2^i bit=1
67-
6850
1 + 0 = 1 --> 答案加 0 bit=1
69-
7051
0 + 1 = 1 --> 答案加 0 bit=1
71-
7252
0 + 0 = 0 --> 答案加 2^i bit=0
73-
7453
```
7554

7655
数据范围是 $-1000<=x<=1000$,如果没有负数,根据二进制位,我们只需要统计10个二进制位,因为 $2^{10}=1024>100$。
@@ -87,50 +66,29 @@ bit = 1 的情况
8766

8867
```c++
8968
classSolution {
90-
9169
public:
92-
9370
int getSum(int a, int b) {
94-
9571
int ans = 0, bit = 0;
96-
9772
for (int i = 0; i < 32; i++) {
98-
9973
int x = (a >> i) & 1, y = (b >> i) & 1;
100-
10174
if (x & y) {
102-
10375
ans |= (bit << i);
104-
10576
bit = 1;
106-
10777
} else if (x | y) {
108-
10978
ans |= (1 ^ bit) << i;
110-
11179
} else {
112-
11380
ans |= (bit << i);
114-
11581
bit = 0;
116-
11782
}
118-
11983
}
120-
12184
return ans;
122-
12385
}
124-
12586
};
126-
12787
```
12888
12989
13090
## 最后
13191
132-
133-
13492
大家好,我是编程熊,字节跳动、旷视科技前员工,ACM亚洲区域赛金牌,欢迎 [关注我](https://leetcode-cn.com/u/bianchengxiong/) 和加入 [LeetCode组队刷题群](https://mp.weixin.qq.com/s/TsTcCDboXwnTnUeIW3Zg9Q)。
13593
13694
@@ -149,5 +107,4 @@ public:
149107
150108
151109
152-
如果题解和文章对你有所帮助,欢迎**点赞**支持。
153-
110+
如果题解和文章对你有所帮助,欢迎**点赞**支持。

‎力扣LeetCode题解/0371-Sum-Of-Two-Integers-两整数之和.md

Lines changed: 1 addition & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,22 @@
22

33
##题解
44

5-
6-
75
题目要求不能使用 $+、-$​,自然想到使用其他的二元运算符,我们可以根据二进制位,选择位运算符计算得到两数之和。
86

97
**二进制相加,思想类似于十进制加法,但从「逢十进一」变为 「逢二进一」。**
108

119
**两个二进制位相加有以下四种情况。**
1210

1311
```
14-
1512
1 + 1 = 0 (进位)
1613
1714
1 + 0 = 1
1815
1916
0 + 1 = 1
2017
2118
0 + 0 = 0
22-
2319
```
2420

25-
26-
2721
直接使用异或 ^ 运算符的话,需要额外处理进位的情况, 即两个二进制位都为1。
2822

2923
我们可以使用 bit位为进位符,来判断这种情况。
@@ -35,45 +29,27 @@
3529
**假设现在统计到二进制的第 i 位。**
3630

3731
```
38-
3932
bit = 0 的情况
4033
41-
42-
4334
二进制位相加 运算后结果
4435
45-
46-
4736
1 + 1 = 0 (进位) --> 答案加 0 bit=1
48-
4937
1 + 0 = 1 --> 答案加 2^i bit=0
50-
5138
0 + 1 = 1 --> 答案加 2^i bit=0
52-
5339
0 + 0 = 0 --> 答案加 2^i bit=0
54-
5540
```
5641

5742

5843

5944
```
60-
6145
bit = 1 的情况
6246
63-
64-
6547
二进制位相加 运算后结果
6648
67-
68-
6949
1 + 1 = 0 (进位) --> 答案加 2^i bit=1
70-
7150
1 + 0 = 1 --> 答案加 0 bit=1
72-
7351
0 + 1 = 1 --> 答案加 0 bit=1
74-
7552
0 + 0 = 0 --> 答案加 2^i bit=0
76-
7753
```
7854

7955
数据范围是 $-1000<=x<=1000$,如果没有负数,根据二进制位,我们只需要统计10个二进制位,因为 $2^{10}=1024>100$。
@@ -89,52 +65,30 @@ bit = 1 的情况
8965

9066

9167
```c++
92-
9368
classSolution {
94-
9569
public:
96-
9770
int getSum(int a, int b) {
98-
9971
int ans = 0, bit = 0;
100-
10172
for (int i = 0; i < 32; i++) {
102-
10373
int x = (a >> i) & 1, y = (b >> i) & 1;
104-
10574
if (x & y) {
106-
10775
ans |= (bit << i);
108-
10976
bit = 1;
110-
11177
} else if (x | y) {
112-
11378
ans |= (1 ^ bit) << i;
114-
11579
} else {
116-
11780
ans |= (bit << i);
118-
11981
bit = 0;
120-
12182
}
122-
12383
}
124-
12584
return ans;
126-
12785
}
128-
12986
};
130-
13187
```
13288
13389
13490
## 最后
13591
136-
137-
13892
大家好,我是编程熊,字节跳动、旷视科技前员工,ACM亚洲区域赛金牌,欢迎 [关注我](https://leetcode-cn.com/u/bianchengxiong/) 和加入 [LeetCode组队刷题群](https://mp.weixin.qq.com/s/TsTcCDboXwnTnUeIW3Zg9Q)。
13993
14094
@@ -153,5 +107,4 @@ public:
153107
154108
155109
156-
如果题解和文章对你有所帮助,欢迎**点赞**支持。
157-
110+
如果题解和文章对你有所帮助,欢迎**点赞**支持。

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp