【LeetCode-字符串】打印从1到最大的n位数

题目描述

输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
示例:

输入: n = 1
输出: [1,2,3,4,5,6,7,8,9]

题目链接: https://leetcode-cn.com/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/

思路

使用大数加法。代码如下:

class Solution {
public:
    vector printNumbers(int n) {
        if(n==0) return {};

        vector ans;
        n = pow(10, n);
        string cur = "0";
        for(int i=1; i=0 || j>=0){
            int x = i>=0? cur[i--]-'0':0;
            int y = j>=0? one[j--]-'0':0;
            int s = x+y+carry;
            carry = s/10;
            sum = to_string(s%10)+sum;
        }
        if(carry!=0) sum = "1" + sum;
        return sum;
    }
};
  • 时间复杂度:O(nlogn)
  • 空间复杂度:O(1)

你可能感兴趣的:(【LeetCode-字符串】打印从1到最大的n位数)