随笔分类 - 位运算
位运算“^”,“&”,“|”以及“~”等会带来意想不到的处理效果
摘要:反转二进制
阅读全文
摘要:判断一个数独是否合法,即数独的每一行,每一列的数字不能有重复,每一个3*3的小数独中的数字不能有重复。 1 class Solution { 2 public: 3 bool isValidSudoku(vector<vector<char> > &board) { 4 int rowValid[1
阅读全文
摘要:统计一个值的二进制1的个数,用与(&)和向左移位(>1){ 6 ans += n&1; 7 } 8 return ans; 9 }10 };解法二: 1 class Solution { 2 public: 3 int hamm...
阅读全文
摘要:题意:先将0, 1, 2, ..., n放入数组,然后去掉其中一个值,找到那个值。这题与singe number 是一个类型,变形的地方就是首先需要将0, 1, 2, ..., n再次放入这个数组,这样就和singe number 一样。 1 class Solution { 2 public: 3...
阅读全文
摘要:先介绍下本题的题意:在一个字符串组成的数组words中,找出max{Length(words[i]) * Length(words[j])},其中words[i]和words[j]中没有相同的字母,在这里字符串由小写字母a-z组成的。对于这道题目我们统计下words[i]的小写字母a-z是否存在,然...
阅读全文
摘要:在一个数组中找出两个不同的仅出现一次的数(其他数字出现两次)同样用亦或来解决(参考编程之美的1.5)先去取出总亦或值然后分类,在最后一位出现1的数位上分类成 ans[0]和ans[1]a&(-a)就是计算出这个数,可以参考树状数组。最后就是注意(nums[i] & a) == 0要加()。注意符号运...
阅读全文
摘要:题意就是从一堆数中找出唯一的一个只存在一个的数。除了那个数,其他的数都是两个相同的数。通过亦或的性质:1)a^a = 0 0^a = a2)交换律 a^b = b^ a3)结合律 (a^b)^c=a^(b^c)这样很容易证明将所有的数亦或就能得到唯一的一个只存在一个的数。 1 class Solut...
阅读全文