zoukankan      html  css  js  c++  java
  • 179. 最大数

    1. 题目描述

    给定一组非负整数 nums,重新排列它们每位数字的顺序使之组成一个最大的整数。

    注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。

    示例 1:

    输入:nums = [10,2]
    输出:"210"
    示例 2:

    输入:nums = [3,30,34,5,9]
    输出:"9534330"
    示例 3:

    输入:nums = [1]
    输出:"1"
    示例 4:

    输入:nums = [10]
    输出:"10"

    2. 解题思路

    整形数组转为字符串数组排序。

    2.1 C++

     1 class Solution {
     2 public:
     3     string largestNumber(vector<int>& nums) {
     4         vector<string> vec;
     5         for(int i = 0; i < nums.size(); i++){
     6             string temp = to_string(nums[i]);
     7             vec.push_back(temp);
     8         }
     9         sort(vec.begin(), vec.end(), cmp);
    10         string all;
    11         if(vec[0] == "0"){
    12             return "0";
    13         }
    14         for(int i = 0; i < vec.size(); i++){
    15             all += vec[i]; 
    16         }       
    17         return all;
    18     }
    19     static bool cmp(string a, string b){
    20         return a + b > b + a;
    21     }
    22 };

    2.2 Java

     1 class Solution {
     2     public String largestNumber(int[] nums) {
     3         String[] s = new String[nums.length];
     4         for(int i = 0; i <nums.length; i++){
     5             s[i] = String.valueOf(nums[i]);
     6         }
     7         
     8         Arrays.sort(s, (a, b) -> (b+a).compareTo((a+b)));
     9         
    10         if(s[0].equals("0")){
    11             return "0";
    12         }
    13         StringBuilder builder = new StringBuilder();
    14 
    15         for(int i = 0; i < nums.length; i++){
    16             builder.append(s[i]);
    17         }
    18         
    19         return builder.toString();
    20     }
    21 }

    2.3 Python

    1 class compare(str):
    2     def __lt__(x, y):
    3         return x + y > y + x
    4 class Solution:
    5     def largestNumber(self, nums: List[int]) -> str:
    6         larger_num = ''.join(sorted(map(str, nums), key = compare))
    7         return '0' if larger_num[0] == '0' else larger_num

    3. 结语

     努力去爱周围的每一个人,付出,不一定有收获,但是不付出就一定没有收获! 给街头卖艺的人零钱,不和深夜还在摆摊的小贩讨价还价。愿我的博客对你有所帮助(*^▽^*)(*^▽^*)!

     如果客官喜欢小生的园子,记得关注小生哟,小生会持续更新(#^.^#)(#^.^#)。

  • 相关阅读:
    [转]CROSS APPLY 和outer apply 的区别
    第一次WCF部署成功心得(UP+证书)
    .NET 简单实现广播
    【转】 c#注册全局快捷键
    软件人才成长链
    [转]关于VS2005智能设备中无法找到PInvoke DLL问题
    [转]我倡导无政府主义编程—Fred George访谈录
    运行Windows Mobile程序时报错:无法找到 PInvoke DLL SQLite.Interop.065.DLL
    系统分析师考试说明
    [转]Oracle 字符集的查看和修改
  • 原文地址:https://www.cnblogs.com/haifwu/p/13854803.html
Copyright © 2011-2022 走看看