位运算

剑指 Offer II 004. 只出现一次的数字

刷穿剑指offer-Day02-整数II 004.只出现一次的数字 位运算讲解 - 只出现一次的数字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
int singleNumber(vector<int>& nums) {
int ret = 0;
for (int i = 0; i < 32; i ++) {
int cnt = 0;
for (auto num: nums) {
cnt += num >> i & 1;
}
if (cnt % 3 != 0) {
ret |= 1 << i;
}
}
return ret;
}
};

剑指 Offer II 005. 单词长度的最大乘积

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
public:
int maxProduct(vector<string>& words) {
int n = words.size();
vector<int> dict(n, 0);
for (int i = 0; i < words.size(); i ++) {
int t = 0;
for (auto c: words[i]) {
int bit = c - 'a';
t |= (1 << bit);
}
dict[i] = t;
}

int ans = 0;
for (int i = 0; i < n; i ++)
for (int j = 0; j < i; j ++)
if ((dict[i] & dict[j]) == 0) {
int temp = words[i].size() * words[j].size();
ans = max(ans, temp);
}
return ans;
}
};

位运算
https://2w1nd.github.io/2022/02/04/算法/理论算法/位运算/
作者
w1nd
发布于
2022年2月4日
许可协议