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%的用户。
运行结果关注更多
更多链接:更多链接