179. Largest Number

Given a list of non negative integers, arrange them such that they form the largest number.

For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330.

Note: The result may be very large, so you need to return a string instead of an integer.

思路:其实就是按照 如果ab>ba(注意这里是连接而不是乗) 那个a>b这个规则将nums中数据从大大小排序,然后从大到小取组成的数就是的了

代码如下(已通过leetcode)

public class Solution {
   public String largestNumber(int[] nums) {
       String res="";
    boolean[] flag=new boolean[nums.length];
    long max=0;
    int maxpos=-1;
    for(int i=0;i<nums.length;i++) {
    for(int j=0;j<nums.length;j++) {
    if(!flag[j]) {
    if(Long.valueOf(""+max+nums[j])<Long.valueOf(""+nums[j]+max)) {
    max=nums[j];
    maxpos=j;
    }
    }
    }
    if(maxpos==-1) break;
    flag[maxpos]=true;
    res=res+nums[maxpos];
    maxpos=-1;
    max=0;
    }
    for(int i=0;i<nums.length;i++) {
if(!flag[i]) {
res=res+nums[i];
flag[i]=true;
}
}
    boolean temp=false;
    for(int i=0;i<res.length();i++) {
    if(res.charAt(i)!='0') {
    temp=true;
    break;
   
    }
    if(!temp) return "0";
    else return res;
   
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值