Advertisement
1988coder

386. Lexicographical Numbers

Feb 2nd, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.57 KB | None | 0 0
  1.  
  2. // LeetCode URL: https://leetcode.com/problems/lexicographical-numbers/
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. /**
  7.  * Recursive DFS
  8.  *
  9.  * Time Complexity: O(N)
  10.  *
  11.  * Space Complexity: O(log10 N)
  12.  *
  13.  * N = input number n.
  14.  */
  15. class Solution1 {
  16.     public List<Integer> lexicalOrder(int n) {
  17.         List<Integer> result = new ArrayList<>();
  18.         if (n <= 0) {
  19.             return result;
  20.         }
  21.  
  22.         for (int i = 1; i <= 9; i++) {
  23.             if (i > n) {
  24.                 break;
  25.             }
  26.             dfsHelper(result, i, n);
  27.         }
  28.  
  29.         return result;
  30.     }
  31.  
  32.     private void dfsHelper(List<Integer> list, int cur, int n) {
  33.         list.add(cur);
  34.  
  35.         cur *= 10;
  36.         for (int i = 0; i <= 9; i++) {
  37.             int newCur = cur + i;
  38.             if (newCur > n) {
  39.                 return;
  40.             }
  41.  
  42.             dfsHelper(list, newCur, n);
  43.         }
  44.     }
  45. }
  46.  
  47. /**
  48.  * Iterative
  49.  *
  50.  * Time Complexity: O(N)
  51.  *
  52.  * Space Complexity: O(1)
  53.  *
  54.  * N = input number n.
  55.  */
  56. class Solution2 {
  57.     public List<Integer> lexicalOrder(int n) {
  58.         List<Integer> result = new ArrayList<>();
  59.         if (n <= 0) {
  60.             return result;
  61.         }
  62.  
  63.         int cur = 1;
  64.  
  65.         for (int i = 1; i <= n; i++) {
  66.             result.add(cur);
  67.  
  68.             if (cur * 10 <= n) {
  69.                 cur *= 10;
  70.             } else {
  71.                 while (cur % 10 == 9 || cur == n) {
  72.                     cur /= 10;
  73.                 }
  74.                 cur++;
  75.             }
  76.         }
  77.  
  78.         return result;
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement