0
Largest Possible Number
Write a function that given a list of non negative integers, arranges them such that they form the largest possible number. For example, given [0, 1, 2, 3], the largest formed number is 3210. Input Format The first line contains one integer N,followed by a line containing N space separated integers. constraints 2 <= N <= 100 1 <= a[i] <= 10^8 Output Format A largest integer, that is formed by arranging the given numbers. Warning: Output may be larger use appropriate data types. Sample Input 4 0 1 2 3 Sample Output 3210 Explanation 3210 is the largest number formed by arranging [0, 1, 2, 3].
4 ответов
+ 1
https://code.sololearn.com/cgQGAN45xbQm/?ref=app
Note: It doesn't require to input the length, only the digits.
0
public class Main {
public static void main(String[] args) {
int n;
int count = 0;
n = in.nextInt();
int[] intArray = new int[n];
while (stringNumber.equals("")) {
stringNumber = in.nextLine();
}
String strArray[] = stringNumber.split(" ");
for (String s : strArray) {
intArray[count++] = Integer.parseInt(s);
}
for (int i = 0; i < intArray.length; i++) {
for (int j = 1; j < intArray.length - i; j++) {
int largestLength;
boolean isNum1LengthGreater = false;
int[] num1 = convertToArray(intArray[j]);
int[] num2 = convertToArray(intArray[j - 1]);
if (num1.length >= num2.length) {
largestLength = num1.length;
isNum1LengthGreater = true;
} else {
largestLength = num2.length;
}
int k1 = 0;
int k2 = 0;
for (int k = 0; k < largestLength; k++) {
if (isNum1LengthGreater) {
if (k >= num2.length) {
k1 = 0;
}
if (num1[k] == num2[k1]) {
k1++;
continue;
}
if (num1[k] > num2[k1++]) {
int temp = intArray[j];
intArray[j] = intArray[j - 1];
intArray[j - 1] = temp;
}
break;
} else {
if (k >= num1.length) {
k2 = 0;
}
if (num1[k2] == num2[k]) {
k2++;
continue;
}
- 1
any other optimize solution??