内容简介:将1~n这n个数字按照字母序排序,并返回排序后的结果。即如果n=13,则1~13的字母序为1,10,11,12,13,2,3,4,5,6,7,8,9这题其实要求我们将数字是做字母来进行排序,因此当我们排序的时候可以看到,假如已知当前的数字为i,则它首先后一位数字应当是
题目要求
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.
将1~n这n个数字按照字母序排序,并返回 排序 后的结果。
即如果n=13,则1~13的字母序为1,10,11,12,13,2,3,4,5,6,7,8,9
思路和代码
这题其实要求我们将数字是做字母来进行排序,因此当我们排序的时候可以看到,假如已知当前的数字为i,则它首先后一位数字应当是 (i x 10) ,如果 (i x 10) 大于n,再考虑 i+1 , 如果 i+1 也大于n,此时再考虑 (i/10)+1 。
public List<Integer> lexicalOrder(int n) {
List<Integer> result = new ArrayList<Integer>();
for(int i = 1 ; i<=9 ; i++) {
lexicalOrder(n, i, result);
}
return result;
}
public void lexicalOrder(int n, int cur, List<Integer> result) {
if(cur > n) return;
result.add(cur);
for(int i = 0 ; i <=9 ; i++) {
lexicalOrder(n, cur*10+i, result);
}
}
想要了解更多开发技术,面试教程以及互联网公司内推,欢迎关注我的微信公众号!将会不定期的发放福利哦~
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Hit Refresh
Satya Nadella、Greg Shaw / HarperBusiness / 2017-9-26 / USD 20.37
Hit Refresh is about individual change, about the transformation happening inside of Microsoft and the technology that will soon impact all of our lives—the arrival of the most exciting and disruptive......一起来看看 《Hit Refresh》 这本书的介绍吧!