首页 > 其他 > 详细

2021.6.4刷题-最大数值

时间:2021-06-04 11:56:08      阅读:13      评论:0      收藏:0      [点我收藏+]

题目链接:https://leetcode-cn.com/problems/maximum-lcci/
题目描述:
编写一个方法,找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。

示例:
输入: a = 1, b = 2
输出: 2

题解:
1.溢出处理。两个int相减若用int保存可能会溢出, 故用long保存结果(64位)。
2.移位处理。计算机中是算数右移, 高位补符号位, 所以负数右移63位结果是-1,正数右移63位结果是0。

class Solution {
public:
    int maximum(int a, int b) {
        long k = (long)a - (long)b;
        int x = (int)(k >> 63);
        return (1 + x) * a - b * x;
    }
};

2021.6.4刷题-最大数值

原文:https://www.cnblogs.com/ZigHello/p/14848641.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!