zoukankan      html  css  js  c++  java
  • [LeetCode] 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.

    Credits:
    Special thanks to @ts for adding this problem and creating all test cases.

    Hide Tags
     Sort
     
     
        这题主要的需要考虑排序中的对比判断,对于给定的两个数lft,rgt,误区是直接 lft rgt 判断,根据题目的思路,介意将rgt 接到 lft后面, 与lft 接到 rgt 后面来对比,这样会简单很多,不过这样需要考虑到是否会溢出的问题,题目的验证好像没有对这一问题的严格控制,可以将相接的数值使用 unsigned long int 来存储,这样避免一定情况的溢出。
     
    #include <vector>
    #include <iostream>
    #include <algorithm>
    #include <sstream>
    using namespace std;
    
    class Solution {
    public:
        string largestNumber(vector<int> &num) {
            struct MyCompared
            {
                bool operator ()(int lft,int rgt)
                {
                    long unsigned int lidx=1,ridx=1;
                    while(lidx!=1000000000)
                        if(lft>=10*lidx)  lidx*=10;
                        else    break;
                    while(ridx!=1000000000)
                        if(rgt>=10*ridx)  ridx*=10;
                        else    break;
                    lidx*=10;
                    ridx*=10;
                    return lft*ridx+rgt > rgt*lidx+lft;
                }
            }myCompared;
            if(num.size()==0)   return "";
            sort(num.begin(),num.end(),myCompared);
            ostringstream os;
            if(num[0]==0)   return "0";
            for(int i =0;i<num.size();i++)
                os<<num[i];
            return os.str();
        }
    };
    
    int main()
    {
        vector<int > num{10,2};
        Solution sol;
        cout<<sol.largestNumber(num)<<endl;
        return 0;
    }
  • 相关阅读:
    Substrings(hdu 4455)
    打砖块(codevs 1257)
    AFO
    愿 你 出 走 半 生 , 归 来 仍 是 少 年
    洛谷 2691逃离
    51Nod 1021 石子归并
    洛谷 P3047 [USACO12FEB]附近的牛Nearby Cows
    codevs 2072 分配房间
    codevs 1388 砍树
    codevs 1288 埃及分数
  • 原文地址:https://www.cnblogs.com/Azhu/p/4335800.html
Copyright © 2011-2022 走看看