보고서 코드에 제출하면, 추천 리셋 "변화 클래스는 홈페이지라고하십시오", 또는 올바른 코드가 배열 범위 오류 등으로보고됩니다. 내가 알 수 없지만, 문제는 단지 잘 리셋 후 길을 일을 시작된다 이유에.
참고 :
https://www.nowcoder.com/questionTerminal/8fecd3f8ba334add803bf2a06af1b993?f=discussion https://blog.csdn.net/fanzitao/article/details/7895344
https://www.cnblogs.com/learnapi/p /9003112.html
제목 설명
양의 정수 배열을 입력 함께 접합 다수 배치 모든 숫자들의 어레이는, 스플 라이스는 최소 하나의 모든 숫자를 출력 할 수있다. 3,32,321 입력 어레이} {예를 들어, 세 개의 숫자의 최소 수는 321,323으로 배치 될 수 인쇄.
온라인 답 오프 가축의 붕괴를 본 후에 두 가지 방법의 존재
메소드 : 정수 ArrayList를,은, Collections.sort와 함께 사용자 지정 정렬 비교 모드로 변환됩니다.
은, Collections.sort 두 가지 유형이 있습니다 :
- 이 정수 문자열 또는 Comparable 인터페이스의 클래스가 달성 된 경우, 방법은 종류 (양의 순서)를 구현하는 매개 변수를 직접 전달은, Collections.sort의 기본 목록을 사용할 수 있습니다.
- 사용자 정의 유형의 경우, 또는 사용자 정의 순서는 방법은 compareTo Comparable 인터페이스에 의해 달성 될 수있다.
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Solution {
public String PrintMinNumber(int [] numbers) {
StringBuilder s =new StringBuilder("");
ArrayList<Integer> inlist=new ArrayList<Integer>();
for (int i=0;i<numbers.length;i++){
inlist.add(numbers[i]);
}
Collections.sort(inlist,new Comparator<Integer>(){
public int compare(Integer s1,Integer s2){
String str1=s1+""+s2;
String str2=s2+""+s1;
return str1.compareTo(str2);
}
});
for(int i:inlist){
s.append(i);}
String a=s.toString();
return a;//return String a=s.toString();是错误的写法
}
}
작은 정수의 서열의 비교는 두 정수 (A2)가 상이한 순서로 함께 접합, A1 될 수 비해 A1 + A2, A2 + A1 개의 작은 정수 정수 풋 (A1)으로하는 경우 A1 + A2 접합 : 방법 두 (A2)의 전방에 배치. 전체 어레이의 로우 시퀀스에이 아이디어에 의하면, 접합 함께 전체 어레이는 작은 정수의 정수이어야한다.
키 : 정렬, 접합 후 크기를 비교하는 두 개의 정수를 다음 순서 반환 작은 값의 접합
import java.util.ArrayList;
import java.util.Arrays;
public class Solution {
public static String PrintMinNumber(int [] numbers) {//调用方法,遍历排序后的数组拼接字符串返回结果。
quicksort(numbers,0,numbers.length-1);
int i=0;
String str="";
while(i<numbers.length)
str+=numbers[i++];
return str;
}
public static void quicksort(int []arr,int begin,int end){//快速排序
if(begin>=end)
return;//
int index=sort(arr,begin,end);
quicksort(arr,begin,index-1);
quicksort(arr,index+1,end);
}
public static int sort(int[]arr,int start,int end){//快速排序
int temp=arr[start];
int i=start;
int j=end;
while(i!=j){
while(i<j&&!judge(arr,j,temp))
j--;
while(i<j&&judge(arr,i,temp))
i++;
if(i<j){
int tem=arr[i];
arr[i]=arr[j];
arr[j]=tem;
}
}
arr[start]=arr[i];
arr[i]=temp;
return i;
}
public static boolean judge(int []arr,int i,int temp){//把两个整数按不同顺序拼接起来比较大小,采用拼接后整数更小的拼接顺序。
Double a=Double.parseDouble(arr[i]+""+temp);
Double b=Double.parseDouble(temp+""+arr[i]);//
if(a<=b)return true;
else return false;
}
}