一、题目内容

image.png

二、题解

解法1:

思路

代码

  1. public class Solution {
  2. /**
  3. * 最大数
  4. * @param nums int整型一维数组
  5. * @return string字符串
  6. */
  7. public String solve (int[] nums) {
  8. // write code here
  9. quickSort(nums,0,nums.length-1);
  10. StringBuilder sb = new StringBuilder();
  11. for(int num:nums){
  12. sb.append(num);
  13. }
  14. String ans = sb.toString();
  15. if(ans.startsWith("0")){
  16. return "0";
  17. }else{
  18. return ans;
  19. }
  20. }
  21. public void quickSort(int[] nums,int low,int high){
  22. if (nums == null || nums.length == 1) {
  23. return;
  24. }
  25. if (low >= high) {
  26. return;
  27. }
  28. int partition = partition(nums, low, high);
  29. quickSort(nums,low,partition-1);
  30. quickSort(nums,partition+1,high);
  31. }
  32. private int partition(int[] nums,int low,int high){
  33. int left = low,right = high;
  34. int target = nums[left];
  35. while(left<right){
  36. while(left<right && compare(target,nums[right])){
  37. right--;
  38. }
  39. nums[left] = nums[right];
  40. while(left<right && compare(nums[left],target)){
  41. left++;
  42. }
  43. nums[right] = nums[left];
  44. }
  45. nums[left] =target;
  46. return left;
  47. }
  48. private boolean compare(int a,int b){
  49. return Integer.parseInt(a+""+b) - Integer.parseInt(b+""+a) >= 0;
  50. }
  51. }