栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA练习214-最大数值

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA练习214-最大数值

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

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

分析: 方法1:内置函数

不使用if-else或其他比较运算符,没说不能使用内置函数,我们可以用 Java 的 Math.max(a,b) 方法直接获取答案。

时间复杂度:O(1)
空间复杂度:O(1)

class Solution {
    public int maximum(int a, int b) {
        return Math.max(a, b);
    }
}
方法2:位运算

a - b 只有两种情况,正数和负数,正数表示 a 大,负数表示 b 大,因为正数移位最大位数后为 0,负数为 1,如果为正数,就是返回 a * 1 + b * 0,如果为负数,a * 0 + b * 1,就是移位后的数一个不变一个取反,取反用异或运算即可。

时间复杂度:O(1)
空间复杂度:O(1)

class Solution {
    public int maximum(int a, int b) {
        //差值移位
        long sub = (long)a - (long)b >>> 63;
        //返回计算后的结果
        return (int)(a * (sub ^ 1) + b * sub);
    }
}

题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-lcci

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/762615.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号