[英]Find smallest pair sum in array
這就是我一直在努力實現的目標:
輸入:arr[] = {1, 7, 2, 9, 6}
對 (1, 2) 將具有最小和對,即 1 + 2 = 3Output: (1,2)=3
- 因為 while 循環迭代一次,所以我無法達到預期的結果。 需要一些幫助 !!
public class Find_Smallest_Pair_Sum_In_Array {
public static void main(String[] args) {
int[] arr = { 1, 7, 2, 9, 6 };
StringBuilder strBuilder = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
strBuilder.append("(");
strBuilder.append(arr[i]);
strBuilder.append(",");
strBuilder.append(arr[j]);
strBuilder.append(")");
strBuilder.append("=");
strBuilder.append(arr[i] + arr[j]);
strBuilder.append("\n");
}
}
Scanner scan = new Scanner(strBuilder.toString());
int first, next = 0;
int previous = 0;
String newStr = "";
while (scan.hasNextLine()) {
String oneLine = scan.nextLine();
int num = Integer.parseInt(oneLine.substring(oneLine.lastIndexOf('=') + 1, oneLine.length()));
first = num;
if(num > previous) {
newStr = oneLine;
System.out.println("if :::: " +newStr);
} else if(num < previous) {
newStr = oneLine;
System.out.println("else if :::: " +newStr);
}
previous = first;
}
System.out.println(newStr);
}
}
我認為你基本上是獲得我希望的數組的最小兩個數字......
這是一個不錯的技巧,可能不是算法效率更高的方法,但它又快又臟:
Arrays.sort(arr);
//This will sort your array.
if(arr.length>1){
System.out.println(arr[0]);
System.out.println(arr[1]);
}
將是您最小的兩個值。 它還將處理您的長度小於 2 的情況。
要找到最小的 2 個數字,請嘗試以下操作:
int min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE;
for (int i : arr) {
if (i < min1) {
min2 = min1;
min1 = i;
} else if (i < min2) min2 = i;
}
這個簡單的解決方案解決了問題:
public class Find_Smallest_Pair_Sum_In_Array {
public static void main(String[] args) {
int[] arr = { 1, 7, 2, 9, 6 };
StringBuilder strBuilder = new StringBuilder();
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
strBuilder.append("(");
strBuilder.append(arr[i]);
strBuilder.append(",");
strBuilder.append(arr[j]);
strBuilder.append(")");
strBuilder.append("=");
strBuilder.append(arr[i] + arr[j]);
strBuilder.append("\n");
}
}
Scanner scan = new Scanner(strBuilder.toString());
String oneLine = "";
int i = 0;
while (scan.hasNextLine()) {
oneLine = scan.nextLine();
if(i == 0) {
System.out.println(oneLine);
break;
}
i++; // This is not required though, but still.
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.