Bit
文章平均质量分 51
Lzed
我好菜啊
展开
-
Leetcode 268 - Missing Number(等差数列 or 位运算)
题意给一个大小为n的数组,里面的元素为[0, n]中缺了一个数字,求缺的那个数字。要求: O(n)O(n)时间。 O(1)O(1)空间。 思路算法1如果数组包含[1, n]那么它的和为n(n+1)2\frac{n(n+1)}{2}。那么我们现在只需要对数组求和,两个相减,得到的就是缺失的那个数字了。算法2利用异或。我们知道^为:1 ^ 1 = 0, 0 ^ 1 = 1。那么,就可以得到这样两个结论:原创 2017-02-16 12:39:03 · 304 阅读 · 0 评论 -
Leetcode 78 - Subsets(枚举)
题意求一个set的所有子集思路算法1二进制枚举算法2回溯法。代码//algorithm 1 class Solution { public: vector<vector<int>> subsets(vector<int>& nums) { int n = nums.size(); vector<vector<int>> ans; for (in原创 2017-02-17 15:16:00 · 209 阅读 · 0 评论 -
Leetcode 201 - Bitwise AND of Numbers Range(bit & math)
题意给定两个数m和n,并且m≤nm \leq n,求f(m, n) = m & (m + 1) & (m + 2) & ... & n的值。思路算法1我们知道,在范围[m,n][m, n]内,对于二进制表示的第i位,只要这个范围内有一个数的第i位为0,那么我们结果f(m,n)f(m, n)的第i位就为0。那么,如果m的第i位是1,并且之后[m,n][m, n]范围内的所有数第i位都是1,那么我们最后原创 2017-03-10 17:45:04 · 278 阅读 · 0 评论 -
Leetcode 401 - Binary Watch(Bit)
题意有一个二进制手表,其中小时和分钟都是二进制表示的。 现在给一个数n,代表二进制表示中为1的那些位的总位数,求有哪些可表示的时间。 思路二进制枚举状态或者枚举时间。 算法1先枚举小时对应的二进制为1的位数i,那么分钟对应的二进制为1的位数就为n - i。 因为小时最大到12(242^4),分钟最大到60(262^6)。 所以我们对于小时从0开始枚举到16,分钟从0枚举到64,找到满足条件原创 2017-03-12 20:19:39 · 228 阅读 · 0 评论