1. 程式人生 > >LeetCode 179. 最大數

LeetCode 179. 最大數

題目描述:

給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。

示例 1:

輸入: [10,2]
輸出: 210

示例 2:

輸入: [3,30,34,5,9]
輸出: 9534330

說明: 輸出結果可能非常大,所以你需要返回一個字串而不是整數。

思路:這裡使用了一個比較邏輯,就是如果字串陣列中相鄰兩位如a,b,都有a+b>b+a,那麼按照這個比較邏輯排序得到的陣列,從頭到尾相連得到的字串一定是最大的(可用反證法證明),通過自定義的compare函式以及sort函式排序,然後把字串陣列中的字串相連

程式碼:

class Solution {
public:    
    static bool compare(string &a, string &b){
        string s1=a+b;
        string s2=b+a;
        
        if(s1>s2)
            return true;
        else
            return false;
            
    }
    
    string largestNumber(vector<int>& nums) {
        string s="";
        int length=int(nums.size());
        if(length==0)
            return s;
        
        vector<string> strings;
        
        int i;
        int count_0=0;
        for(i=0;i<length;++i)
        {   
            if(nums[i]==0 ) count_0++;
            strings.push_back(to_string(nums[i]));
        }
        
        if(count_0==length)
            return "0";
        
        if(length==1){
            s+=strings[0];
            return s;
        }
        sort(strings.begin(), strings.end(), compare);
        
        for(i=0;i<length;++i)
            s+=strings[i];
        
        return s;
    }
};

相關推薦

LeetCode 179. 大數(C++)

給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。 示例 1: 輸入: [10,2] 輸出: 210 示例 2: 輸入: [3,30,34,5,9] 輸出: 9534330 說明: 輸出結果可能非常大,所以你需要返回一個字串而不是整數。 C++

LeetCode 179. 大數

題目描述:給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。示例 1:輸入: [10,2] 輸出: 210示例 2:輸入: [3,30,34,5,9] 輸出: 9534330說明: 輸出結果可能非常大,所以你需要返回一個字串而不是整數。思路:這裡使用了一個比較邏輯,

leetcode 179 大數

給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。 示例 1: 輸入: [10,2] 輸出: 210 示例 2: 輸入: [3,30,34,5,9] 輸出: 9534330 說明: 輸出結果可能非常大,所以你需要返回一個字串而不是整數。 解題思路: 和

[LeetCode javaScript] 179. 大數

給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。 示例 1: 輸入: [10,2] 輸出: 210 示例 2: 輸入: [3,30,34,5,9] 輸出: 9534330 說明: 輸出結果可能非常大,所以你需要返回一個字串而不是整數。 /** *

LeetCode179. 大數 結題報告 (C++)

題目描述: 給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。 示例 1: 輸入: [10,2] 輸出: 210 示例 2: 輸入: [3,30,34,5,9] 輸出: 9534330 說明: 輸出結果可能非常大,所以你需要返回一個字串而不是整數。

179.大數

給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。 示例 1: 輸入: [10,2] 輸出: 210 示例 2: 輸入: [3,30,34,5,9] 輸出: 9534330 說明: 輸出結果可能非常大,所以你需要返回一個字串而不是整數。 class

179. 大數

給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。 示例 1: 輸入: [10,2] 輸出: 210 示例 2: 輸入: [3,30,34,5,9] 輸出: 9534330 說明: 輸出結

leetcode大數

                                                     最大數 一、要求 給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。 示例 1: 輸入: [10,2] 輸出: 210 示例 2: 輸入: [3,3

LeetCode 179.Largest Number (大數)

題目描述: 給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。 示例 1: 輸入: [10,2] 輸出: 210 示例 2: 輸入: [3,30,34,5,9] 輸出: 9534330 說明: 輸出結果可能非常大,所以你需要返回一個字串而不是

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

[LeetCode] Largest Number At Least Twice of Others 至少是其他數字兩倍的大數

arr ret ice integer value pla clas post there In a given integer array nums, there is always exactly one largest element. Find whethe

LeetCode:至少是其他數字兩倍的大數【747】

描述 index lee 提示 int highlight pan 是不是 dom LeetCode:至少是其他數字兩倍的最大數【747】 題目描述 在一個給定的數組nums中,總是存在一個最大元素 。 查找數組中的最大元素是否至少是數組中每個其他數字的兩倍。 如果是,則返

LeetCode-整形陣列組合大數(Java)

文章目錄 題目描述 示例 解析 題目描述 給定一個正整型陣列,將陣列中各個元素組合成一個數,輸出組合結果最大的那個數。 示例 輸入: {9, 3, 32, 33, 303} 輸出: 933332

LeetCode 747. 至少是其他數字兩倍的大數(C、C++、python)

在一個給定的陣列nums中,總是存在一個最大元素 。 查詢陣列中的最大元素是否至少是陣列中每個其他數字的兩倍。 如果是,則返回最大元素的索引,否則返回-1。 示例 1: 輸入: nums = [3, 6, 1, 0] 輸出: 1 解釋: 6是最大的整數, 對於陣列中的其他整數, 6大

[leetcode]至少是其他數字兩倍的大數

747. 至少是其他數字兩倍的最大數 在一個給定的陣列nums中,總是存在一個最大元素 。 查詢陣列中的最大元素是否至少是陣列中每個其他數字的兩倍。 如果是,則返回最大元素的索引,否則返回-1。 示例 1: 輸入: nums = [3, 6, 1, 0] 輸出: 1

leetcode陣列和字串】 至少是其他數字兩倍的大數

在一個給定的陣列nums中,總是存在一個最大元素 。 查詢陣列中的最大元素是否至少是陣列中每個其他數字的兩倍。 如果是,則返回最大元素的索引,否則返回-1。 示例 1: 輸入: nums = [3, 6, 1, 0] 輸出: 1 解釋: 6是最大的整數, 對於陣列中的其他整數, 6大

[Leetcode] 747. 至少是其他數字兩倍的大數 java

 在一個給定的陣列nums中,總是存在一個最大元素 。 查詢陣列中的最大元素是否至少是陣列中每個其他數字的兩倍。 如果是,則返回最大元素的索引,否則返回-1。 示例 1: 輸入: nums = [3, 6, 1, 0] 輸出: 1 解釋: 6是最大的整數, 對於陣列中

[LeetCode] Create Maximum Number 建立大數

Given two arrays of length m and n with digits 0-9 representing two numbers. Create the maximum number of length k <= m + n from digits of the two. Th

Leetcode 321.拼接大數

拼接最大數 給定長度分別為 m 和 n 的兩個陣列,其元素由 0-9 構成,表示兩個自然數各位上的數字。現在從這兩個陣列中選出 k (k <= m + n) 個數字拼接成一個新的數,要求從同一個陣列中取出的數字保持其在原陣列中的相對

leetcode+從左到右每一個區間裡的大數,雙向單調佇列

//雙向單調佇列 class Solution { public: vector<int> maxSlidingWindow(vector<int>& num