摘要: 这个和一个数组中,存在某个数的数目是超过总数的一半的,找出这个数的原理是一样的。 做法就是统计三个数的数目,相同就加1,和三个数都不同,三个数都减1,因为它们的数目是超过1/4的,那么它们三个最后肯定是留下来的。 算法时间复杂度O(N) C++ include include using names 阅读全文
posted @ 2017-10-13 22:24 清水汪汪 阅读(624) 评论(0) 推荐(0) 编辑
摘要: 就是二进制数中只有1位为1,就是2的幂。n & (n 1)可以把二进制数中最后一位1置0. 阅读全文
posted @ 2017-10-13 21:13 清水汪汪 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 异或操作可以将不同的位,置为1,然后再统计出1的个数就可以计算出不同位数的个数。 C++ include using namespace std; int main() { int a, b; cin a b; int c = a ^ b; int num = 0; while (c) { num+ 阅读全文
posted @ 2017-10-13 20:20 清水汪汪 阅读(190) 评论(0) 推荐(0) 编辑