美文网首页
LeetCode No.4 字典序排数

LeetCode No.4 字典序排数

作者: MRYDM | 来源:发表于2019-05-17 16:37 被阅读0次

1. LeetCode386题目链接链接

https://leetcode.com/problems/lexicographical-numbers/

2. 结题思路

该题主要是实现输入n,用一个数组保存从1到n,但是需要实现字典序排数,可以从左往右依次插入数字,如果很大,就会变成[1,10,100,1000...2,20,200,2000...],这样我们可以看出一个规律,如果n足够大的话,是这样的排序,我们可以将下一位与n对比,然后未超过就加入数组中,超过就再次循环依次加一,然后在进行上述过程。需要注意的是9和加一成为最后一位。

public List<Integer> lexicalOrder(int n) {
        List<Integer> list = new ArrayList<>(n);
        int curr = 1;
        for (int i = 1; i <= n; i++) {
            list.add(curr);
            if (curr * 10 <= n) {
                curr *= 10;
            } else if (curr % 10 != 9 && curr + 1 <= n) {
                        curr++;
                    }else {
                        while ((curr / 10) % 10 == 9) {
                            curr /= 10;
                        }
                        curr = curr / 10 + 1;
                    }
        }
        return list;
    }

3. 结果

相关文章

网友评论

      本文标题:LeetCode No.4 字典序排数

      本文链接:https://www.haomeiwen.com/subject/qouoaqtx.html