1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// @Title: 单调递增的数字 (Monotone Increasing Digits)
// @Author: 15816537946@163.com
// @Date: 2020-12-15 23:54:17
// @Runtime: 0 ms
// @Memory: 2 MB
// 贪心
func monotoneIncreasingDigits(N int) int {
	s := []byte(strconv.Itoa(N))
	for i := len(s) - 2; 0 <= i; i-- {
		if s[i] <= s[i+1] {
			continue
		}

		// 当 s[i] > s[i+1] 时
		s[i]--
		// s[i+1:] 中的数字全部变成 9
		for j := i + 1; j < len(s); j++ {
			s[j] = '9'
		}
	}

	res, _ := strconv.Atoi(string(s))
	return res
}