C++ 中的詞法順序數字
假設我們有一個整數 n。我們必須按詞法順序返回 1 到 n。例如,當給定 13 時,輸出將為 [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9]。
為解決此問題,我們將遵循以下步驟 -
定義一個大小為 n 的陣列 ret
curr := 1
對於範圍 0 到 n – 1 中的 i
ret[i] := curr
如果 curr * 10 <= n,則設定 curr := curr * 10
否則
如果 curr >= n,則 curr := curr / 10
curr 增加 1
當 curr 可被 10 整除時,curr := curr / 10
返回 ret
示例 (C++)
我們看看以下實現以更好地理解 -
#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v){
cout << "[";
for(int i = 0; i<v.size(); i++){
cout << v[i] << ", ";
}
cout << "]"<<endl;
}
class Solution {
public:
vector<int> lexicalOrder(int n) {
vector <int> ret(n);
int curr = 1;
for(int i = 0; i < n; i++){
ret[i] = curr;
if(curr * 10 <= n){
curr*= 10;
} else {
if(curr>= n)curr /= 10;
curr += 1;
while(curr % 10 == 0)curr/=10;
}
}
return ret;
}
};
main(){
Solution ob;
print_vector(ob.lexicalOrder(20));
}輸入
20
輸出
[1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 3, 4, 5, 6, 7, 8, 9, ]
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP