Fork me on GitHub

[leetcode-556-Next Greater Element III]

Given a positive 32-bit integer n, you need to find the smallest 32-bit integer which has exactly the same digits existing in
the integer n and is greater in value than n. If no such positive 32-bit integer exists, you need to return -1.

思路:

求元素的全排列,然后选出比n大的所有元素中最小的那个。

 vector<int>digit;
    int backup = n;
    while(n)
    {
        digit.push_back(n%10);
        n/=10;
    }
    sort(digit.begin(),digit.end());
    long long result = INT_MAX +1LL;
        do {
                long long temp =0;
                for(int i=0;i<digit.size();i++)
                {
                    temp = temp*10 + digit[i];
                }
            if (temp > backup) result = min(result, temp);
        } while (next_permutation(digit.begin(), digit.end()));

    if(result<=INT_MAX) return result;
    else return -1;

 

posted @ 2017-04-09 14:17  hellowOOOrld  阅读(236)  评论(0编辑  收藏  举报