算法训练营day32,贪心算法6

import "strconv"

//738. 单调递增的数字

func monotoneIncreasingDigits(n int) int {

str := strconv.Itoa(n)

nums := []byte(str)

length := len(nums)

if length <= 1 {

return n

}

for i := length - 1; i > 0; i-- {

//如果前一个数字比当前值大,说明不是单调递增的,把前一个数字减1,之后所有数字变成9

if nums[i-1] > nums[i] {

nums[i-1]--

for j := i; j < length; j++ {

nums[j] = '9'

}

}

}

res, _ := strconv.Atoi(string(nums))

return res

}

相关推荐
2301_818419012 分钟前
C++中的协程编程
开发语言·c++·算法
add45a4 分钟前
C++中的工厂方法模式
开发语言·c++·算法
無限進步D11 分钟前
二分算法 cpp
算法
xushichao198912 分钟前
C++中的工厂模式高级应用
开发语言·c++·算法
2501_9249526920 分钟前
C++模块化编程指南
开发语言·c++·算法
qzhqbb20 分钟前
差分隐私与大模型+差分隐私在相关领域应用的论文总结
人工智能·算法
2401_8319207424 分钟前
基于C++的爬虫框架
开发语言·c++·算法
MSTcheng.30 分钟前
【优选算法必修篇——位运算】『面试题 01.01. 判定字符是否唯一&面试题 17.19. 消失的两个数字』
java·算法·面试
weixin_4219226931 分钟前
模板元编程性能分析
开发语言·c++·算法
2401_8512729933 分钟前
C++中的类型擦除技术
开发语言·c++·算法