zoukankan      html  css  js  c++  java
  • 0179. Largest Number (M)

    Largest Number (M)

    题目

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

    Example 1:

    Input: [10,2]
    Output: "210"
    

    Example 2:

    Input: [3,30,34,5,9]
    Output: "9534330"
    

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


    题意

    给定一个数组,要求将其中所有数的顺序重新排列,使其能组成一个最大的数(字符串的形式)。

    思路

    对于整数a和b,如何确定哪个数放在前面,可以用如下方法:比较字符串ab和ba的字典序,若ab > ba则先放a,反之先放b。数组排好序后,将各元素依次拼接成字符串即为答案。如果排序后的数组第一个元素为0,说明后面所有元素都为0,只要返回0即可。

    因为求的是最大数可以像上面这样简单处理,但如果求的是最小数则要进一步处理0的问题(因为0不能放在最大位上,这是无效的),可以采取以下措施:1. 遍历一遍数组,统计0的个数为n,并将非零整数存入新数组中;2. 将新数组按照字典序进行排序;3. 在第一个元素后添加n个0。


    代码实现

    Java

    class Solution {
        public String largestNumber(int[] nums) {
            String[] strs = new String[nums.length];
            for (int i = 0; i < nums.length; i++) {
                strs[i] = String.valueOf(nums[i]);
            }
            Arrays.sort(strs, new Cmp());
            
            // 都一个元素为0,说明后面所有元素都为0
            if (strs[0].equals("0")) {
                return "0";
            }
            
            StringBuilder ans = new StringBuilder();
            for (int i = 0; i < strs.length; i++) {
                ans.append(strs[i]);
            }
            
            return ans.toString();
        }
    
        private class Cmp implements Comparator<String> {
            @Override
            public int compare(String o1, String o2) {
                return (o2 + o1).compareTo(o1 + o2);
            }
        }
    }
    

    JavaScript

    /**
     * @param {number[]} nums
     * @return {string}
     */
    var largestNumber = function (nums) {
      nums.sort((a, b) => (a + '' + b <= b + '' + a ? 1 : -1))
    
      if (nums[0] === 0) {
        return '0'
      }
    
      return nums.join('')
    }
    
  • 相关阅读:
    网络安全分析
    java实现 洛谷 P1464 Function
    java实现 洛谷 P1464 Function
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1540 机器
    java实现 洛谷 P1540 机器
  • 原文地址:https://www.cnblogs.com/mapoos/p/13733124.html
Copyright © 2011-2022 走看看