最大数值Java版(力扣)
【摘要】 最大数值编写一个方法,找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。示例:输入: a = 1, b = 2输出: 2==题意:找出两个数的最大值,不能使用if-else或其他比较运算符。====思路:利用数学公式==求绝对值时,为了不用系统的Math.abs(),我们自己写一个:long absolute(long a) { int flag = (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异或等价于按位取反
}
==正确代码:==
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;
}
}
==完整代码(含测试代码):==
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;
}
}
==输出结果:==
8
Process finished with exit code 0
看完如果对你有帮助,感谢点赞支持!
加油!
共同努力!
Keafmd
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)