首页 > 其他 > 详细

[leetcode-556-Next Greater Element III]

时间:2017-04-09 14:28:01      阅读:495      评论:0      收藏:0      [点我收藏+]

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;

 

[leetcode-556-Next Greater Element III]

原文:http://www.cnblogs.com/hellowooorld/p/6684645.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!