给定K个整数,找出由这K个整数组成的最小的数字

来源:互联网 发布:淘宝国产手机质量排名 编辑:程序博客网 时间:2024/06/11 20:05

思路:先找出这几个整数元素所有的全排列,然后比较哪一个最小即可,全排列的求法可以看我的这篇博客:http://blog.csdn.net/zx582727090/article/details/52171084

代码如下:

import java.util.ArrayList;import java.util.TreeSet;public class Solution {    public String PrintMinNumber(int [] numbers) {        if(numbers.length==0){            return "";        }        TreeSet<String> set = new TreeSet<String>();        arrange(numbers, 0, numbers.length-1, set);        long result = java.lang.Long.MAX_VALUE;        for(String str:set){            long temp = Long.parseLong(str);            if(temp<result){                result = temp;            }        }        return String.valueOf(result);    }        public void arrange(int[] numbers, int begin, int end, TreeSet set){        if(begin==end){            String result = "";            for(int i:numbers){                result += String.valueOf(i);            }            set.add(result);            return;        }else{            for(int i=begin;i<=end;i++){                swap(numbers, begin, i);                arrange(numbers, begin+1, end, set);                swap(numbers, begin, i);            }        }    }        public void swap(int[] numbers, int before, int after){        int temp = numbers[before];        numbers[before] = numbers[after];        numbers[after] = temp;    }}

0 0