https://leetcode.com/problems/lexicographical-numbers/#/description
字典排序给定数字
找下一个数,能加零加零,能自增自增,否则找从后往前第一位不是9的,将该位自增一个数
public class Solution {
public List<Integer> lexicalOrder(int n) {
List<Integer> list = new LinkedList();
int cur = 1;
for (int i = 1; i <= n; i++) {
list.add(cur);
if (cur * 10 <= n) {
cur *= 10;
} else if (cur % 10 != 9 && cur + 1 <= n) {
cur++;
} else {
// 先除10再取余数!!else if已经表明了要么最后一位是9要么cur到达最大值。
// 所以要找到的是前面的一位不是9的,因此除10
while ((cur / 10) % 10 == 9) {
cur /= 10;
}
cur = (cur / 10) + 1;
}
}
return list;
}
}
转载请注明原文地址: https://ju.6miu.com/read-40482.html