算法刷题

LeetCode刷题-最大数值

2021-07-11  本文已影响0人  小鲨鱼FF

前言说明

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

题目连接

最大数值

题目内容

编写一个方法,找出两个数字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%的用户。

运行结果

关注更多

更多链接:更多链接

上一篇下一篇

猜你喜欢

热点阅读