美文网首页算法刷题
LeetCode刷题-最大数值

LeetCode刷题-最大数值

作者: 小鲨鱼FF | 来源:发表于2021-07-11 13:54 被阅读0次

前言说明

算法学习,日常刷题记录。

题目连接

最大数值

题目内容

编写一个方法,找出两个数字a和b中最大的那一个,不得使用if-else或其他比较运算符。

示例:

输入: a = 1, b = 2

输出: 2

分析过程

利用简单的数学知识即可,a和b的最大值 = (a + b + abs(a - b)) / 2。

当a > b时,(a + b + abs(a - b)) / 2 = (a + b + a - b) / 2 = 2a / 2 = a。

当b > a时,(a + b + abs(a - b)) / 2 = (a + b + b - a) / 2 = 2b / 2 = b。

解答代码

class Solution {
    public int maximum(int a, int b) {
        // 利用简单的数学知识即可,a和b的最大值 = (a + b + abs(a - b)) / 2
        // 当a > b时,(a + b + abs(a - b)) / 2 = (a + b + a - b) / 2 = 2a / 2 = a
        // 当b > a时,(a + b + abs(a - b)) / 2 = (a + b + b - a) / 2 = 2b / 2 = b
        long abs = Math.abs((long)a - (long)b);
        long sum = (long)a + (long)b + abs;
        return (int)(sum / 2);
    }
}

提交结果

执行用时9ms,时间击败100.00%的用户,内存消耗35.4MB,空间击败9.70%的用户。

运行结果

关注更多

更多链接:更多链接

相关文章

网友评论

    本文标题:LeetCode刷题-最大数值

    本文链接:https://www.haomeiwen.com/subject/whrhpltx.html