zoukankan      html  css  js  c++  java
  • LeetCode-Lexicographical Numbers

    Given an integer n, return 1 - n in lexicographical order.

    For example, given 13, return: [1,10,11,12,13,2,3,4,5,6,7,8,9].

    Please optimize your algorithm to use less time and space. The input size may be as large as 5,000,000.

    Analysis:

    The numbers are arranged in tree structure:

    1

    10 11 12 ... 19

    100 101 ..... 109 | 110 111 .... 119 | .....

    We just use DFS to go through the tree.

    Solution:

     1 public class Solution {
     2     public List<Integer> lexicalOrder(int n) {
     3         List<Integer> resList = new ArrayList<Integer>();
     4         for (int i = 1; i < 10; i++) {
     5             lexicalOrderRecur(i, n, resList);
     6         }
     7         return resList;
     8     }
     9 
    10     public void lexicalOrderRecur(int cur, int n, List<Integer> resList) {
    11         if (cur > n) {
    12             return;
    13         }
    14         resList.add(cur);
    15 
    16         for (int i = 0; i < 10; i++) {
    17             if (10 * cur + i > n) {
    18                 break;
    19             }
    20             lexicalOrderRecur(10 * cur + i, n, resList);
    21         }
    22     }
    23 }
  • 相关阅读:
    微服务配合docker使用
    基于docker部署使用ELK+FileBeat日志管理平台
    Ubuntu开发用新机安装流程
    http 直接从body里传输数据
    005
    003
    004
    001
    002
    谷歌查看、管理cookie
  • 原文地址:https://www.cnblogs.com/lishiblog/p/5828388.html
Copyright © 2011-2022 走看看