leetcode-556:下一个更大元素 III

简介: leetcode-556:下一个更大元素 III

题目

题目连接

给你一个正整数 n ,请你找出符合条件的最小整数,其由重新排列 n 中存在的每位数字组成,并且其值大于 n 。如果不存在这样的正整数,则返回 -1 。

注意 ,返回的整数应当是一个 32 位整数 ,如果存在满足题意的答案,但不是 32 位整数 ,同样返回 -1 。

示例 1:

输入:n = 12
输出:21

示例 2:

输入:n = 21
输出:-1

解题

leetcode-31:下一个排列相同的思路,只是要在它的基础上,多了溢出判断

方法一:

class Solution {
public:
    //溢出判断
    bool isValidInt(string& s){
        string maxS=to_string(INT_MAX);
        if(s.size()<maxS.size()) return true;
        for(int i=0;i<s.size();i++){
            if(s[i]>maxS[i]) return false;
            else if(s[i]==maxS[i]) continue;
            else if(s[i]<maxS[i]) return true;
        }
        return true;
    }
    int nextGreaterElement(int n) {
        string s=to_string(n);
        int len=s.size();
        int i=len-2,j=len-1;
        while(i>=0&&s[i]>=s[j]){
            i--;
            j--;
        }
        if(i<0) return -1;
        int k=len-1;
        while(s[i]>=s[k]){
            k--;
        }
        swap(s[i],s[k]);
        sort(s.begin()+i+1,s.end());
        if(!isValidInt(s)) return -1;
        else return stoi(s);
    }
};
相关文章
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
142 1
|
6月前
|
机器学习/深度学习 存储 算法
【LeetCode 热题100】347:前 K 个高频元素(详细解析)(Go语言版)
这篇文章详细解析了力扣热题 347——前 K 个高频元素的三种解法:哈希表+小顶堆、哈希表+快速排序和哈希表+桶排序。每种方法都附有清晰的思路讲解和 Go 语言代码实现。小顶堆方法时间复杂度为 O(n log k),适合处理大规模数据;快速排序方法时间复杂度为 O(n log n),适用于数据量较小的场景;桶排序方法在特定条件下能达到线性时间复杂度 O(n)。文章通过对比分析,帮助读者根据实际需求选择最优解法,并提供了完整的代码示例,是一篇非常实用的算法学习资料。
412 90
【LeetCode 27】347.前k个高频元素
【LeetCode 27】347.前k个高频元素
127 0
|
存储 算法
LeetCode第83题删除排序链表中的重复元素
文章介绍了LeetCode第83题"删除排序链表中的重复元素"的解法,使用双指针技术在原链表上原地删除重复元素,提供了一种时间和空间效率都较高的解决方案。
LeetCode第83题删除排序链表中的重复元素
【LeetCode 06】203.移除链表元素
【LeetCode 06】203.移除链表元素
94 0
【LeetCode-每日一题】移除元素
【LeetCode-每日一题】移除元素
93 0
|
算法 索引
LeetCode第34题在排序数组中查找元素的第一个和最后一个位置
这篇文章介绍了LeetCode第34题"在排序数组中查找元素的第一个和最后一个位置"的解题方法,通过使用双指针法从数组两端向中间同时查找目标值,有效地找到了目标值的首次和最后一次出现的索引位置。
LeetCode第34题在排序数组中查找元素的第一个和最后一个位置
|
Python
【Leetcode刷题Python】剑指 Offer II 082. 含有重复元素集合的组合
解决LeetCode平台《剑指 Offer II 082. 含有重复元素集合的组合》题目的Python代码实现,通过深度优先搜索算法找出所有和为特定目标值的数字组合,并在搜索过程中通过排序和跳过重复元素来避免解集中出现重复组合。
113 2
LeetCode第27题移除元素
这篇文章介绍了LeetCode第27题"移除元素"的解题方法,通过使用双指针技巧,有效移除数组中特定值的元素并返回新数组的长度。
【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题:翻转对、买卖股票最佳时机、数组中第K个最大/最小元素
【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题:翻转对、买卖股票最佳时机、数组中第K个最大/最小元素