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('')
    }
    
  • 相关阅读:
    dirname,basename的用法与用途
    终极解决方案——sbt配置阿里镜像源,解决sbt下载慢,dump project structure from sbt耗时问题
    linux-manjaro下添加Yahei Hybrid Consola字体
    Idea无法调出搜狗等中文输入法
    Spring 源码学习系列
    BF算法
    Mybatis Mapper接口是如何找到实现类的-源码分析
    Lua脚本在redis分布式锁场景的运用
    GO语言一行代码实现反向代理
    SpringMVC源码分析-400异常处理流程及解决方法
  • 原文地址:https://www.cnblogs.com/mapoos/p/13733124.html
Copyright © 2011-2022 走看看