您的位置:首页 > 健康 > 养生 > 重庆网站制作开发_建设摩托车报价大全_seo关键词快速提升软件官网_上海百度竞价点击软件

重庆网站制作开发_建设摩托车报价大全_seo关键词快速提升软件官网_上海百度竞价点击软件

2024/10/6 0:31:58 来源:https://blog.csdn.net/navicheung/article/details/142547956  浏览:    关键词:重庆网站制作开发_建设摩托车报价大全_seo关键词快速提升软件官网_上海百度竞价点击软件
重庆网站制作开发_建设摩托车报价大全_seo关键词快速提升软件官网_上海百度竞价点击软件

386. Lexicographical Numbers

Given an integer n, return all the numbers in the range [1, n] sorted in lexicographical order.

You must write an algorithm that runs in O(n) time and uses O(1) extra space.
 

Example 1:

Input: n = 13
Output: [1,10,11,12,13,2,3,4,5,6,7,8,9]

Example 2:

Input: n = 2
Output: [1,2]

Constraints:
  • 1 < = n < = 5 ∗ 1 0 4 1 <= n <= 5 * 10^4 1<=n<=5104

From: LeetCode
Link: 386. Lexicographical Numbers


Solution:

Ideas:
  • Handling integers: If s doesn’t start with a [, it’s a single integer, so we parse it using atoi and return a NestedInteger containing that integer.
  • Handling lists: We traverse through the string character by character.
    • When encountering [, we initialize a new NestedInteger and push the current one onto a stack if necessary.
    • When encountering ], we pop from the stack and add the current NestedInteger to the parent.
    • When encountering digits (or - for negative numbers), we parse the number and add it to the current list.
  • Memory management: We use a stack to keep track of nested structures, and
Code:
/*** Note: The returned array must be malloced, assume caller calls free().*/
void dfs(int current, int n, int* result, int* index) {// Add the current number to the result arrayresult[(*index)++] = current;// Try to append digits (0-9) to the current numberfor (int i = 0; i <= 9; i++) {int next = current * 10 + i;if (next > n) {break; // Stop if the number exceeds n}dfs(next, n, result, index);}
}int* lexicalOrder(int n, int* returnSize) {// Allocate memory for the result arrayint* result = (int*)malloc(n * sizeof(int));int index = 0;// Perform DFS starting from 1 to 9for (int i = 1; i <= 9; i++) {if (i > n) {break;}dfs(i, n, result, &index);}// Set the return size*returnSize = n;return result;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com