Leetcode刷題 38 外觀數列

2022-06-19 19:09:07 字數 1246 閱讀 7353

參考部落格:

題目描述:

解題思路:

理解一下題目的意思,外觀數列是乙個整數序列,從數字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

solution

}cur += to_string(curnumcnt); //

注意這兩步別忘了

cur.push_back(curnum);

pre =cur;

}return

pre;}};

注:這裡用到了push_back()函式,c++中push_back()函式的用法

函式將乙個新的元素加到vector的最後面,位置為當前的最後乙個元素的下乙個元素

push_back()在vector的最後新增乙個元素(引數為要插入的值)

//

在vec尾部新增10

vector

vec;

vec.push_back(

10);

//

在容器中新增10

int num = 10

;vector

vec;

vec.push_back(num);

或者在string中最後插入乙個字元:

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 項。注意 整數順序將表示為乙個字串。每次迭代...