最大数值Java版(力扣)
【摘要】 最大数值
编写一个方法,找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。
示例: 输入: a = 1, b = 2 输出: 2
题意:找出两个数的最大值,不能使用if-else或其他比较运算符。 思路:利用数学公式 求绝对值时,为了不用系统的Math.abs(),我们自己写一个:
long absolute(long a) { int...
编写一个方法,找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。
示例:
输入: a = 1, b = 2
输出: 2
题意:找出两个数的最大值,不能使用if-else或其他比较运算符。
思路:利用数学公式
求绝对值时,为了不用系统的Math.abs(),我们自己写一个:
long absolute(long a) { int flag = (int) (a >> 63); //a为正数flag = 0,a为负数flag = -1 return (flag ^ a) - flag; //任何数与0异或值不变,任何数与-1异或等价于按位取反
}
- 1
- 2
- 3
- 4
正确代码:
class Solution { long absolute(long a) { int flag = (int) (a >> 63); //a为正数flag = 0,a为负数flag = -1 return (flag ^ a) - flag; //任何数与0异或值不变,任何数与-1异或等价于按位取反 } public int maximum(int a, int b) { long aa=a; long bb=b; int num=(int)((absolute(aa-bb)+aa+bb)/2); return num; }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
完整代码(含测试代码):
package com.Keafmd.day0103;
/**
* Keafmd
*
* @ClassName: Maximum
* @Description: 最大数值
* @author: 牛哄哄的柯南
* @date: 2021-01-03 19:39
*/
public class Maximum { public static void main(String[] args) { Solution solution = new Solution(); int a=8,b=-26; int result = solution01032.maximum(a,b); System.out.println(result); }
}
class Solution { long absolute(long a) { int flag = (int) (a >> 63); //a为正数flag = 0,a为负数flag = -1 return (flag ^ a) - flag; //任何数与0异或值不变,任何数与-1异或等价于按位取反 } public int maximum(int a, int b) { long aa=a; long bb=b; int num=(int)((absolute(aa-bb)+aa+bb)/2); return num; }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
输出结果:
8
Process finished with exit code 0
- 1
- 2
- 3
看完如果对你有帮助,感谢点赞支持!
如果你是电脑端,看到右下角的 “一键三连” 了吗,没错点它[哈哈]
加油!
共同努力!
Keafmd
文章来源: keafmd.blog.csdn.net,作者:牛哄哄的柯南,版权归原作者所有,如需转载,请联系作者。
原文链接:keafmd.blog.csdn.net/article/details/112150902
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)