參考部落格:
題目描述:
解題思路:
理解一下題目的意思,外觀數列是乙個整數序列,從數字1開始,序列中的每一項都是對前一項的描述。我們需要根據輸入的n,輸出外觀陣列的第n項(n從1開始)。
使用迭代來做,以根據第三項21求第4項作為例子。首先設定當前的數字為2項的第乙個字元2,以及當前數字2連續出現多少次cnt,初始化為1,然後開始迴圈,如果下乙個數字也是2,則cnt++;否則,將2[cnt]放進對該項的描述當中([cnt]表示cnt的值,例如這裡cnt為1,所以將「21」放入下乙個項中),然後將下乙個數字作為當前的數字,將cnt重置為1。這是求相鄰兩項的步驟,因為要求第n項,所以需要將上面的步驟迴圈n次。**如下:
class注:這裡用到了push_back()函式,c++中push_back()函式的用法solution
}cur += to_string(curnumcnt); //
注意這兩步別忘了
cur.push_back(curnum);
pre =cur;
}return
pre;}};
函式將乙個新的元素加到vector的最後面,位置為當前的最後乙個元素的下乙個元素
push_back()在vector的最後新增乙個元素(引數為要插入的值)
//在vec尾部新增10
vector
vec;
vec.push_back(
10);
//或者在string中最後插入乙個字元:在容器中新增10
int num = 10
;vector
vec;
vec.push_back(num);
string類似的:str;
str.push_back('d
');
pop_back() //移除最後乙個元素
clear() //清空所有元素
empty() //判斷vector是否為空,如果返回true則為空
erase() //刪除指定元素
leetcode刷題 38 外觀數列
外觀數列 是乙個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。前五項如下 1 11 21 1211 1112211 被讀作 one 1 乙個一 即 11。11 被讀作 two 1s 兩個一 即 21。21 被讀作 one 2 one 1 乙個二 乙個一 即 1211。給定乙個正整數 ...
LeetCode刷題(38 外觀數列)
38.外觀數列 給定乙個正整數 n 輸出外觀數列的第 n 項。外觀數列 是乙個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。你可以將其視作是由遞迴公式定義的數字字串序列 countandsay 1 1 countandsay n 是對 countandsay n 1 的描述,然後轉換...
Leetcode刷題(38 報數)
示例 1 1121 1211 111221 1 被讀作 one 1 乙個一 即 11。11 被讀作 two 1s 兩個一 即 21。21 被讀作 one 2 one 1 乙個二 乙個一 即 1211。給定乙個正整數 n 1 n 30 輸出報數序列的第 n 項。注意 整數順序將表示為乙個字串。每次迭代...