• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

刷题-强行扣分-面试题16.07 最大值


Recommended Posts

题目链接

资料来源:LeetCode

链接:https://leetcode-cn.com/problems/maximum-lcci/

版权归领网所有。商业转载请联系官方授权,非商业转载请注明出处。

题目描述

写一个方法,求两个数A和b中最大的一个,不要用if-else或者其他比较运算符。

示例:

输入:a=1,b=2

输出:2

题目分析

根据题目描述,判断两个数的大小不使用比较运算符合if-else。

Int为4字节32位,正数第一位(符号位)为0,负数第一位为1。通过判断两个数之差的第一位,可以区分两个数的大小。

两个数之差的移位将符号位移到最右边,可能是0或-1。

使用0或-1返回A或b。

代码

类别解决方案{

公共:

int maximum(int a,int b) {

//int 4字节32位

//保留a-b的符号位,正号位为0,负号位为1

龙la=a;

长lb=b;

//k的值是0 -1

int k=(la-lb)63;

返回a *(k 1)b *(k 1);

}

};

Link to comment
Share on other sites