`

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.

给定一个数组,里面存放的都是非负整数,要求我们用里面的元素组成一个最大的数。这里我们首先将数组转换成一个一个字符串数组,这样我们就可以自定义Arrays.sort方法了,我们用到了Comparator接口,通过重写compare方法,来得到一个最大的数。关键就是compare的实现,我们知道compare有两个参数p1, p2, 如果p1 < p2时返回-1, p1 = p2返回0,p1 > p2返回1。在这道题目中,我们将两个参数先相加s1 = p1 + p2, s2 = p2 + p1,这样得到两个新的参数。为了更清楚的解释,我们假设此时p1 = "34", p2 = "56", 所以s1 = "3456" , s2 = "5634"。按照题目的要求我们要得到一个最大的数,这时我们希望p2和p1交换位置,因为s2 > s1, 所以我们应该返回1,因此我们在compare中返回s2.compareTo(s1)即可。代码如下:
public class Solution {
    public String largestNumber(int[] nums) {
        StringBuilder sb = new StringBuilder();
        if(nums == null || nums.length == 0) return null;
        String[] str = new String[nums.length];
        for(int i = 0; i < nums.length; i++)   
            str[i] = String.valueOf(nums[i]);
        Arrays.sort(str, new Comparator<String>() {
            public int compare(String i, String j) {
                String s1 = i + j;
                String s2 = j + i;
                return s2.compareTo(s1);
            }
        });
        for(String s : str)
            sb.append(s);
        if(str[0].equals("0")) 
            return "0";
        return sb.toString();
    }
}
1
0
分享到:
评论

相关推荐

    java-leetcode题解之Largest Number.java

    public String largestNumber(int[] nums) { // 将整型数组转换成字符串数组 String[] asStrs = new String[nums.length]; for (int i = 0; i ; i++) { asStrs[i] = String.valueOf(nums[i]); } // 自定义...

    C++-leetcode题解之747. Largest Number At Least Twice of Others.cpp

    747题,即Largest Number At Least Twice of Others,是leetcode上的一道经典算法题。这道题目的要求是找出数组中一个数,这个数至少是数组中其他数的两倍。具体来说,如果存在这样的数,返回这个数的索引;如果不...

    题解:ABC273C - (K+1)-th Largest Number

    代码

    python-leetcode题解之179-Largest-Number.py

    print(largestNumber(nums)) # 输出 "9534330" ``` 在上面的代码中,我们首先定义了一个名为`compare`的函数,该函数用于比较两个数字的组合顺序。然后我们检查是否存在全为零的情况。若不存在,我们使用`sorted`...

    java-leetcode题解之179-Largest-Number

    在leetCode上的题号为179的题目“Largest Number”要求参与者编写一个Java函数,该函数接收一个整数数组作为输入,然后将数组中的数字重新排列成尽可能大的数值。这一过程需要将数字进行比较,确定哪个数字放前哪个...

    js-leetcode题解之179-largest-number.js

    LeetCode 179题「Largest Number」要求编写一个JavaScript函数,该函数接收一个数字数组作为参数,并返回一个由数组中数字重新排列组合后形成的最大的数字字符串。如果没有可能的组合,则需要返回一个"0"字符串。 ...

    福建省南安市石井镇厚德中学九年级英语上册 Unit 3 Topic 1 English is widely spoken aro

    1. (全世界)人数最多 - the largest number of people worldwide 2. 多于,超过 - more than 3. 在所有这些语言中 - among all these languages 4. 最为广泛地被使用 - used most widely 5. 最新的研究 - the ...

    联发科2023年最新IC前端设计验证笔试题

    此外,还定义了一个测试函数`test_largestNumber`来验证`largestNumber`函数的正确性。 #### 5. Verilog实现简单加法器 题目要求使用Verilog实现一个简单的加法器。下面是一个基本的8位加法器实现示例: ```...

    c程序设计第四版课后习题答案

    习题答案,过程详细,仅供参考。 摘录文档片段如下: 1-6. #include int main() {int a,b,c,max; printf("please input a,b,c:\n");... printf("The largest number is %d\n",max); return 0; }

    JS中取二维数组中最大值的方法汇总

    在JavaScript中可以通过内置的 Math.max() 的最大值,但是要从多重数组中取出最大值,还是有一定的难度。 问题描述 假设你有一个数组,而且这个数组中...var largestNumber = 0; // 创建第二个变量,存储最大的数 //

    c语言编程题之数组操作第三大的数.zip

    printf("The third largest number is the same as the first and second largest: %d\n", arr[n - 3]); } else if (arr[n - 3] == arr[n - 2]) { printf("The third largest number is: %d\n", arr[n - 3]); } ...

    C++通过自定义函数找出一个整数数组中第二大数的方法

    cout &lt;&lt; "The second largest number in the array is: " &lt;&lt; second_largest ; return 0; } ``` 这段代码会输出数组中的第二大数。这种方法不仅适用于排序数组,也适用于未排序的数组,因此具有很好的通用性。 ...

    sfs.rar_FH DS_The Show_dw_dw vhdl

    MES2 DB 0AH,0DH, The largest number is:$ NUMB DB 0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H DDATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DDATA START: MOV AX,DDATA MOV DS,AX MOV SI,OFFSET NUMB MOV CX,...

    浙江省苍南县巨人中学2014-2015学年高中英语 language points 1导学案 新人教版必修2

    例如:In fact, China may have the largest number of English learners.(实际上,中国可能是英语学习者最多的国家。) 【探究案解析】 在探究案部分,重点练习了如何使用“because of”和“because”引导原因...

    python-leetcode面试题解之第179题最大数-题解.zip

    print(largestNumber(nums)) # 输出:9534330 ``` 通过这个题目,我们可以深入理解Python的字符串操作、排序功能以及如何自定义排序规则。同时,这也是一个很好的练习,可以帮助开发者提升解决实际问题的能力,尤其...

    c++编程初学者习题

    std::cout &lt;&lt; "The largest number is: " ; } else if (b &gt; a && b &gt; c) { std::cout &lt;&lt; "The largest number is: " ; } else { std::cout &lt;&lt; "The largest number is: " ; } return 0; } ``` 2. **百分制...

    北京邮电大学 离散数学上机第1001题

    Description Now, there are a list of N numbers. Your job is to find the Mth largest number X. (there are M-1 numbers &gt;= X)

    牛津9A期末复习题综合练习精选.doc

    形容词最高级前需加定冠词"the",同时"people"前使用"the largest number of"表示最多的数量,故答案是D. the largest number of。 5. 题目5测试句子结构。"We call this dog Eddie"是主语+谓语+间接宾语+直接宾语...

    Rust泛型:代码复用与类型安全的黄金钥匙

    ("The largest number is {}", result); } ``` 在这个示例中,`largest`函数是一个泛型函数,它可以接收任何实现了`PartialOrd`和`Copy`特质的类型的切片,并返回其中最大的元素。 #### 四、泛型与特质(Traits) ...

Global site tag (gtag.js) - Google Analytics