使用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