参考部分,如有侵权,请联系删除。
编写一个方法,找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。
示例:
输入: a = 1, b = 2
输出: 2
方法一、数学思维
思路:计算两个数的最大值有如下公式。
因为在进行加减的过程中数字可能会过大溢出,导致结果错误,所以我们还应该将int转话为long或者double来防止溢出。
Java解法
class Solution {
public int maximum(int a, int b) {
long c = a;
long d = b;
int res = (int) ((Math.abs(c-d) + c + d)/2);
return res;
}
}
耗时0ms
Python解法
class Solution:
def maximum(self, a: int, b: int) -> int:
return int((math.fabs(a-b) + a + b)/2)
耗时28ms
复杂度分析
时间复杂度:O(1)
空间复杂度:O(1)
博主比较小白,但是热爱分享。一直感觉自己写代码的能力,算法能力都不太行,所以最近开始刷LeetCode,一方面记录方便自己学习,另一方面给需要的同伴参考。虽然失败并不可怕,但是也希望同伴们少踩一些坑。分析算法挺费劲的,留个赞或评论支持一下博主吧!同时我也非常希望写出更通俗易懂的文章,知识尚浅,如有遗漏或错误,欢迎指正~