556. 下一个更大元素 III

556. 下一个更大元素 III

class Solution {
public:
    int nextGreaterElement(int n) {
        string s = to_string(n);
        bool desc = true;
        int m = s.size();
        for(int i = 0; i < m - 1; i++) {
            if(s[i] < s[i+1])desc=false;
        }
        if(desc) return -1;

        int j, k;
        for(int i = m - 1; i>=0; i--) {
            if(s[i-1] < s[i]) {
                j = i - 1;
                break;
            }
        }
        for(int i = m - 1; i>=0 ;i--) {
            if(s[i] > s[j]) {
                swap(s[j], s[i]);
                sort(s.begin() + j + 1, s.end());
                break;
            }
        }
        long long a = atoll(s.c_str());
        if(a > INT_MAX) return -1;
        return a;
    }
};

你可能感兴趣的:(556. 下一个更大元素 III)