比特位计数:
动态规划:
PHP,20ms,解题里面最快的那个就是我哈哈哈哈哈。
状态转移方程:
$res[$i] = $res[$i >> 1] + ($i&1);
- 最后一位是1,>>运算符将最后一位的1去掉,加上 $i&1
- 最后一位是0,>>运算符将最后一位的0去掉,加上 $i&1
class Solution {
/**
* @param Integer $num
* @return Integer[]
*/
function countBits($num) {
$res = [];
for($i = 0;$i <= $num;$i++){
$res[$i] = $res[$i >> 1] + ($i&1);
}
return $res;
}
}