使用Java,如果不使用条件,我们如何找到一组3个数字中最大的两个数字。找到两个最大数字3的总和
例如,给定3个数字{2,3,5}
int a = 2;
int b = 3;
int c = 5;
int total;
总将与C + B = 8
使用Java,如果不使用条件,我们如何找到一组3个数字中最大的两个数字。找到两个最大数字3的总和
例如,给定3个数字{2,3,5}
int a = 2;
int b = 3;
int c = 5;
int total;
总将与C + B = 8
List<Integer> data = Arrays.asList(23,6,13);
Collections.sort(data);
Collections.reverse(data)
data = data.sublist(0,2);
System.out.println(data);
我可以立即做出更高效的工作:不要反转,并使用'data.sublist(1,3)'。或者,当然可以用反向自然顺序比较器进行分类。 –
@AndyTurner true。但是这很清楚发生了什么。 – f1sh
所有这些方法都使用里面的'if'。我想这个问题关于某些没有使用条件的东西(比如if/while/etc)。似乎有一些调查可能的解决方案,为更简单的情况下这里http://stackoverflow.com/questions/476800/comparing-two-integers-without-any-comparison –
一条线的值来替换:
int biggest = (a > b ? a : b) > c ? (a > b ? a : b) : c;
两行:
int firstStep = (a > b ? a : b);
int biggest = firstStep > c ? firstStep : c;
的Java 8:
int max = Arrays.stream(numbers).max().getAsInt();
int sec_max = Arrays.stream(numbers).filter(i -> i != max).max().getAsInt();
比什么更有效的方法是什么? –
对集合进行排序并获取前两个值。 – SomeJavaGuy
这听起来有点像你把你的作业放在别人身上;没有丝毫的尝试来解决这个难题。你认为你会从中学到什么? – GhostCat