面试题
cbakgly
这个作者很懒,什么都没留下…
展开
-
异或XOR怎么用别的逻辑运算替代
异或XOR的结果保存了两个数间的不同位。那么 A & B 可以把相同的1保存下来。!A & !B 可以把相同的0保存下来。(A & B) | (!A & !B) = 保存了两个数相同的位。最后再反一次:!( (A & B) | (!A & !B) ) = 保存了不同位。根据公式 1) !( A | B ) = !A & !B2) !( A &原创 2012-08-02 22:53:17 · 1708 阅读 · 0 评论 -
【面试题】打印最长升序子序列
有数组int a[] = {1, 2, 3, 4, 5, 8, 6, 3, 0, 6, 2, 4, 8, 1, 0, 8, 5, 6, 2, 5, 9, 10, 8, 6};打印出升序的最长的一个子序列,比如这里从1开始到8的序列最长。这里包含两个问题:1 找到升序的序列: 序列可以用一个二元组表示 {起始位置,长度},或者{起始位置,终止位置} 或者 {终止位置,长度}。原创 2012-08-02 22:09:26 · 419 阅读 · 0 评论 -
【面试题】【c++】 实现只能在堆上实例化的类
这题目面试官的愿意是考察的是C++对象的生命周期。也就是,栈对象在离开作用域时会析构。对于如下的代码:Class A {};void func(){ A a; //do something}经过编译后,会在最后插入析构函数:void func(){ A a; //a.A::A(); //do something a.A::~A(原创 2012-08-02 22:13:00 · 329 阅读 · 0 评论 -
【面试题】求两个数的2进制差异位的个数
A = 100B = 50两个数的二进制位数差异有几个?先转换成二进制格式A = 1100100B = 0110010掰指头用眼睛数一下,是4个位不同。那么对比的方式可以用XOR解决。A XOR B = 1010110那么不同的位就转换为了1,相同的位为0.那么不同的个数 = 1的个数。int num = 0原创 2012-08-02 22:43:07 · 536 阅读 · 0 评论