Golang | Leetcode Golang题解之第556题下一个更大元素III

题目:

题解:

Go 复制代码
func nextGreaterElement(n int) int {
    x, cnt := n, 1
    for ; x >= 10 && x/10%10 >= x%10; x /= 10 {
        cnt++
    }
    x /= 10
    if x == 0 {
        return -1
    }

    targetDigit := x % 10
    x2, cnt2 := n, 0
    for ; x2%10 <= targetDigit; x2 /= 10 {
        cnt2++
    }
    x += x2%10 - targetDigit // 把 x2%10 换到 targetDigit 上

    for i := 0; i < cnt; i++ { // 反转 n 末尾的 cnt 个数字拼到 x 后
        d := targetDigit
        if i != cnt2 {
            d = n % 10
        }
        if x > math.MaxInt32/10 || x == math.MaxInt32/10 && d > 7 {
            return -1
        }
        x = x*10 + d
        n /= 10
    }
    return x
}
相关推荐
洛水水7 小时前
【力扣100题】60.缺失的第一个正数
leetcode·哈希算法
止语Lab8 小时前
Go跨平台编译的决策树:从\
开发语言·决策树·golang
Kurisu5758 小时前
深度解析:Go 语言 GMP 调度器模型与内核线程探测
java·数据库·golang
菜菜的顾清寒8 小时前
力扣HOT100(35)回溯-全排列
算法·leetcode·职场和发展
Tisfy8 小时前
LeetCode 3121.统计特殊字母的数量 II:状态机
算法·leetcode·题解·状态机
洛水水8 小时前
【力扣100题】61.和为 K 的子数组
算法·leetcode·哈希算法
sheeta19988 小时前
LeetCode 补拙笔记 日期:2026.05.27 题目:61. 旋转链表
笔记·leetcode·链表
赴前尘9 小时前
Go 语言实现 TOTP 双因素认证完整指南
开发语言·后端·golang
chushiyunen9 小时前
golang笔记、go
开发语言·笔记·golang
过期动态1 天前
【LeetCode 热题 100】移动零
java·数据结构·算法·leetcode·职场和发展·rabbitmq