作者enmeitiryous (enmeitiryous)
看板Marginalman
標題Re: [閒聊] 每日leetcode
時間Sat Sep 21 08:57:34 2024
題目:386. Lexicographical Numbers
給你一個數字n求以lexicographical order排序的1-n的數字順序
思路:
lexicographical order就是字串排序的方式例如2>17>10這樣,所以也可以暴力的把1到n
的數字全部轉字串後排序,比較好也滿足題目要求作法是:從1開始塞,如果*10比n小
下一個就塞上一個塞的數*10,不然的話假如這個要塞的數尾數是9(+1會改變上一位數,
下一個要塞的數會違反字典序例如109下一個是11而不是110)或是為n(代表可以回去塞比
n小一位數但字典序>n的數)則/=10,直到滿足條件後再+1
vector<int> lexicalOrder(int n) {
vector<int> pre_ans;
int a=1;
for(int i=0;i<n;++i){
pre_ans.push_back(a);
if(10*a<=n){
a*=10;
}
else{
while(a%10==9 || a==n){
a/=10;
}
a+=1;
}
}
return pre_ans;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.196.198 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1726880256.A.2DC.html
→ sixB: 我剛剛想iterative *10 /10 +1 寫不好才改recursive 09/21 09:08
→ sixB: 您好厲害哇啊啊啊 09/21 09:08
推 dont: 大師 09/21 12:08