(5) 가장 적은 수의 어레이로 배열 안전 문제 노트를 입증 할 제공

보고서 코드에 제출하면, 추천 리셋 "변화 클래스는 홈페이지라고하십시오", 또는 올바른 코드가 배열 범위 오류 등으로보고됩니다. 내가 알 수 없지만, 문제는 단지 잘 리셋 후 길을 일을 시작된다 이유에.

참고 :
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 두 가지 유형이 있습니다 :

  1. 이 정수 문자열 또는 Comparable 인터페이스의 클래스가 달성 된 경우, 방법은 종류 (양의 순서)를 구현하는 매개 변수를 직접 전달은, Collections.sort의 기본 목록을 사용할 수 있습니다.
  2. 사용자 정의 유형의 경우, 또는 사용자 정의 순서는 방법은 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;
    }
}

추천

출처www.cnblogs.com/dongmm031/p/12168890.html