week20
191 - 位1的个数
这题就是经典的lowbit运算了,也叫汉明距离
x & (-x) 得到最低位的1 和 后面的所有0构成的数值 x & (x - 1) 删除最低位的1剩下的数值
也就是 x = x & (-x) + x & (x - 1) 算是常见的位运算小技巧了
class Solution {
public:
int hammingWeight(uint32_t n) {
int cnt = 0;
while(n)
{
n = n & (n - 1);
cnt++;
}
return cnt;
}
};198 - 打家劫舍
是比较基础的dp了 也是状态机模型的一个简单应用:
f[i, 0] 表示上一家没偷过 f[i, 1] 表示上一家偷过了
状态转移方程: - f[i][0] = max(f[i - 1][0], f[i - 1][1]) : 第i家没偷 可以从上一家偷了or没偷转移过来 - f[i][1] = f[i - 1][0] + nums[i - 1] : 第i家偷了 只能从上一家没偷转移过来
空间也能优化成一维的 不写了
199 - 二叉树的右视图
这是什么 层序遍历的最后一个元素;
层序遍历就BFS好了;
200 - 岛屿数量
宇宙无敌经典搜索题,判重记得在原数组上改就好了;
200题Clear!
Last updated