AcWing 58. 练习一下快排 贪心好难想
原题链接
中等
作者:
henhen敲
,
2020-04-30 22:24:02
,
所有人可见
,
阅读 764
能够意识到
当ab<=ba, bc<=cb能够得出
ac<=ca
这题基本解决了 只需重新定义一种比较运算就行
即 a+""+b <= b+""+a 则可以推出 a应该放在前面
class Solution {
public String printMinNumber(int[] nums) {
quickSort(nums, 0, nums.length-1);
String s = "";
for(int i=0; i<nums.length;i++)
s += nums[i];
return s;
}
public void quickSort(int[] nums, int l, int r){
if(l>=r) return;
int x = nums[(l+r)>>1];
int i, j;
i = l - 1; j = r + 1;
while(i<j){
do i++; while((nums[i]+""+x).compareTo(x+""+nums[i])<0);
do j--; while((nums[j]+""+x).compareTo(x+""+nums[j])>0);
if(i<j){
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
quickSort(nums, l, j);
quickSort(nums, j+1, r);
}
}