降低Java中biginteger问题的时间复杂度

时间:2019-02-06 16:12:58

标签: java sorting biginteger

在这个问题中,我们必须对元素进行排序,但是该元素采用biginteger格式,因此我已经做了一些努力,但是由于超时而无法通过某些测试用例,所以请建议我如何降低时间复杂度。

static String[] bigSorting(String[] unsorted) {

    BigInteger big[]=new BigInteger[unsorted.length];
    String str[]=new String[unsorted.length];
    for(int i=0;i<unsorted.length;i++)
    {
        big[i]=new BigInteger(unsorted[i]);

    }
    Arrays.sort(big);
    for (int i = 0; i < unsorted.length; i++) {
        StringBuffer sb = new StringBuffer("");
        str[i]=sb.append(big[i]).toString();

    }
    return str;
}

1 个答案:

答案 0 :(得分:2)

我完全不会将字符串转换成BigIntegers。这样做是为了对字符串的整数值进行排序。以下假设所有字符串都包含正数或0个BigInteger值,即没有负数。否则,代码会变得更加复杂(WRT的长度)。

我将使用自定义比较器直接对字符串数组进行直接排序:

public class BIComp implements Comparator<String>
{
    public int compare(String s1, String s2)
    {
        if (s1.length() > s2.length())
            return 1;
        else if (s1.length() < s2.length())
            return -1;
        else
            return s1.compareTo(s2);
    }
}


...
Arrays.sort(str, new BIComp());