博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Lexicographical Numbers
阅读量:5235 次
发布时间:2019-06-14

本文共 1501 字,大约阅读时间需要 5 分钟。

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.

给定一个整数n,返回1-n的字典序输出。
思路1:使用stl函数sort,更改比较函数,输出即可。由于输入数字较大,导致超时。
class Solution {public:    static bool cmp(const int& a, const int& b)    {        string s1 = to_string(a);        string s2 = to_string(b);        return s1 < s2;    }    vector
lexicalOrder(int n) { vector
res; for (int i = 1; i <= n; ++i) res.push_back(i); sort(res.begin(), res.end(), cmp); return res; }};
TLE

思路2:根据数字的特征值。

举个栗子:13

1-10-11-12-13

2

3

4

5

6

7

8

9

外循环1-9.内函数递归增加0-9进行计算,如果当前值超过了n,则直接返回,如果当前值不超过n,则放入结果数组res中。

class Solution {public:    vector
lexicalOrder(int n) { vector
res; for (int i = 1; i < 10; ++i) find_next(i, n, res); return res; } void find_next(int i, int n, vector
& res) { if (i > n) return; res.push_back(i); for (int j = 0; j < 10; ++j) find_next(i*10+j, n, res); }};

思路3:Python sorted函数。

class Solution:    def lexicalOrder(self, n):        """        :type n: int        :rtype: List[int]        """        return sorted(range(1, n+1), key=lambda x : str(x))

 

转载于:https://www.cnblogs.com/immjc/p/9504111.html

你可能感兴趣的文章
HTTP POST和GET的区别
查看>>
树的存储结构(双亲表存储结构)
查看>>
POJ 1840 Eqs Hash
查看>>
tornado-模板继承extend,函数和类的导入
查看>>
JavaScript 的一些应用场景分析
查看>>
What does it mean for an algorithm to be fair
查看>>
卷积神经网络总结
查看>>
C语言字符数组回顾
查看>>
Referring Relationships 代码阅读笔记
查看>>
微信小程序:开发之前要知道的三件事
查看>>
vue-echarts的使用及编译报错解决方法
查看>>
Apicloud——图片不适配屏幕解决方案
查看>>
在ionic这个框架下(Angular JS),对URL进行重写,过滤掉URL中的#号
查看>>
JSP学习
查看>>
sql语句查询出表里符合条件的第二条记录的方法
查看>>
破解IT运维成本困境,专业化分工是妙方
查看>>
sql中decode()重要函数使用
查看>>
小感叹
查看>>
【BZOJ-1340】Escape逃跑问题 最小割
查看>>
srl16e verilog
查看>>