【发布时间】:2020-11-12 01:23:05
【问题描述】:
我正在努力解决 Java 中的这个编码问题。它必须使用算法来解决。它应该给我可以用数组中的数字形成的最大可能的 inter:{10, 7, 76, 415}。我尝试使用选择排序来解决它。到目前为止,我的代码如下,但它给了我错误的输出。我的代码:
公共类最大数{ 公共静态 int maximumNumber(int[] arr) {
for (int i = 1; i < arr.length -1; i++) {
for (int j = i +1; j < arr.length; j++) {
String temp1 = Integer.toString(i) + Integer.toString(j);
String temp2 = Integer.toString(j) + Integer.toString(i);
if (Integer.parseInt(temp2) > Integer.parseInt(temp1)) {
int swap = arr[i];
arr[i] = arr[j];
arr[j] = swap;
}
}
}
String ansNum = "";
for (int i = 0; i < arr.length; i++) {
ansNum += Integer.toString(arr[i]);
}
return Integer.parseInt(ansNum);
}
public static void main(String[] args) {
int [] arr = {10, 7, 76, 415};
int output = largestNumber(arr);
System.out.println(output); //Print out the number
}
}
此代码的给定输出为:10415767 但正确答案是:77641510
请提供您的反馈和想法。
【问题讨论】:
-
那么,对于输入数组 {10, 7, 76, 415},答案应该是 77,641,510 吗?因为你可以很快变得比 int 更大。
-
您没有提到您的代码应该解决什么问题,或者您的代码当前所做的与此不同。
-
但作为对问题所在的“第一次猜测”。你是
return-ing 一个String来自一个说它将返回一个int的方法。 -
您还需要修复交换代码。你需要一个临时变量。
-
我认为算法方法更简单:您可以按前导字符降序排列它们,然后是第二个字符等。不匹配的长度会比较最后一个字符(所以@ 987654325@ 7 79)。最终结果将是最大可能的数字(按数字计算)。
标签: java algorithm sorting selection-sort