LeetCode:Largest Number

1、题目名称

Largest Number(求整型数组中各元素可拼合成的最大数字)

2、题目地址

https://leetcode.com/problems/largest-number/

3、题目内容

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

中文:给出一组非负整数,求这些非负整数可以拼接出的最大数字

说明:例如,给出数组 [3, 30, 34, 5, 9],拼接出的最大数字为9534330

4、解题方法

由于本题输入是一个整型数组,输出是一个字符串,因此在输出前,可以考虑对数组进行一下排序。

下面是一段WA(Wrong Answer)的Java代码,先将数组转换成一个字符串数组,再按照字符串的大小进行排序

import java.util.Arrays;
import java.util.Collections;

/**
 * 功能说明:LeetCode 179 - Largest Number
 * 开发人员:Tsybius2014
 * 开发时间:2015年8月8日
 */
public class Solution {
    
    /**
     * 最大的数字
     * @param nums 数组
     * @return
     */
    public String largestNumber(int[] nums) {

        String[] array = new String[nums.length];
        for (int i = 0; i < nums.length; i++) {
            array[i] = String.valueOf(nums[i]);
        }
        Arrays.sort(array, Collections.reverseOrder());
        
        return String.join("", array);
    }
}

这个排序方法并不能按照题目要求正确排序。例如,数字8和883,如果按照字符串顺序排序,883大于8,就会把883放在前面,8放在后面,最后输出8838。而实际8883才是正确结果。正确的排序方法,是使用排序方法进行比较时,比较两个字符串(设为A和B),以先后顺序拼接而成的两个字符串A+B和B+A,如果A+B更大,则A在前B在后,否则A在后B在前。

一段可以AC(Accept)的Java代码如下:

/**
 * 功能说明:LeetCode 179 - Largest Number
 * 开发人员:Tsybius2014
 * 开发时间:2015年8月8日
 */
public class Solution {
    
    /**
     * 最大的数字
     * @param nums 数组
     * @return
     */
    public String largestNumber(int[] nums) {

        String[] array = new String[nums.length];
        for (int i = 0; i < nums.length; i++) {
            array[i] = String.valueOf(nums[i]);
        }

        String temp;
        for (int i = 0; i < array.length; i++) {
            for (int j = i + 1; j < array.length; j++) {
                if ((array[i] + array[j]).compareTo(array[j] + array[i]) < 0) {
                    temp = array[i];
                    array[i] = array[j];
                    array[j] =temp;
                }
            }
        }
        
        if (array[0].equals("0")) {
            return "0";
        } else {
            return String.join("", array);
        }
    }
}

END

时间: 2025-01-04 05:04:27

LeetCode:Largest Number的相关文章

LeetCode[Sort]: Largest Number

LeetCode[Sort]: 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

8.15 [LeetCode] 179 Largest Number

[LeetCode 179] Largest Number | COMMENTS Question link 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 ver

leetCode 179. Largest Number 字符串排序 | Medium

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 st

[LeetCode] 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 i

LeetCode:Palindrome Number - 回文数

1.题目名称 Palindrome Number(回文数) 2.题目地址 https://leetcode.com/problems/palindrome-number 3.题目内容 英文:Determine whether an integer is a palindrome. Do this without extra space. 中文:确认一个整数是否是回文数 4.解题方法1 将数字翻转后判断与原数字是否相等,可以参考LeetCode第7题(Reverse Integer)的解题思路.J

LeetCode:Happy Number - 快乐数

1.题目名称 Happy Number(快乐数) 2.题目地址 https://leetcode.com/problems/happy-number/ 3.题目内容 英文: Write an algorithm to determine if a number is "happy". A happy number is a number defined by the following process: Starting with any positive integer, repla

Java for LeetCode 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 i

LeetCode:Missing Number - 缺失的数字

1.题目名称 Missing Number (缺失的数字) 2.题目地址 https://leetcode.com/problems/missing-number 3.题目内容 英文:Given an array containing n distinct numbers taken from 0, 1, 2, ..., n  find the one that is missing from the array. 中文:给出一个包含了n个不同数字的数组,从0开始一直到n,找出缺失的数字.如果数

[LeetCode] 179. Largest Number Java

题目: 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