关闭

【刷题之路】不使用比较返回两个数中较大的值

标签: 刷题算法
116人阅读 评论(0) 收藏 举报

不使用比较只能判断两个数的差的正负,使用位运算,判断符号位即可

注意若两数一正一负,可能出现相减后溢出的情况,注意判断即可

class Compare {
public:
    int getMax(int a, int b) {
        // write code here
        if(isnegitive(a) && ispositive(b)) return b;
        if(isnegitive(b) && ispositive(a)) return a;
        int c=a-b;
        if(isnegitive(c)) return b;
        else return a;
        
    }
    bool isnegitive(int num){
        return num & (1 << (sizeof(num)*8 - 1));
    }
    bool ispositive(int num){
        return !(num & (1 << (sizeof(num)*8 - 1)));
    }
};

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:10162次
    • 积分:797
    • 等级:
    • 排名:千里之外
    • 原创:72篇
    • 转载:2篇
    • 译文:0篇
    • 评论:1条