安卓 騰訊2020校園招聘 後台

2022-09-10 21:00:18 字數 927 閱讀 9699

本題是對遞迴思想的考察。根據題意抽取出遞迴函式的行為:

每次讀入乙個字元,直到遇到]或輸入結束;對每次讀入的字元進行判斷,如果是大寫字母,就準備輸出;如果是[,就接下來讀入重複次數count|,對於剩下的輸入,遞迴呼叫decompress()獲取被重複的字串,然後將該字串重複count次;最後返回所有待輸出的字串。可以用stringstream來實現字串的拼接。

#include #include #include std::string decompress()  else if (c == '[') 

} else if (c == ']')

}return ss.str();

}int main()

這道題與poj 3250類似,用到了單調棧,區別是這道題可以向兩邊看,而且可以看到自己。

使用兩個單調棧分別記錄左邊和右邊能看到的樓數量,由於單調棧的特性,被擋住的樓會被彈棧,所以每次迭代棧的大小就是能看到樓的數量,將左邊和右邊能看到的樓數量相加並+1(能看到自己)就得到了結果。

#include #include #include int main() 

std::stackleft, right;

for (int i = 0; i < n; i++)

left.push(nums[i]);

while (!right.empty() && right.top() <= nums[j])

right.push(nums[j]);

}for (int i = 0; i < n; i++)

return 0;

}

騰訊2020校園招聘 後台

小q在週末的時候和他的小夥伴來到大城市逛街,一條步行街上有很多高樓,共有n座高樓排成一行。小q從第一棟一直走到了最後一棟,小q從來都沒有見到這麼多的樓,所以他想知道他在每棟樓的位置處能看到多少棟樓呢?當前面的樓的高度大於等於後面的樓時,後面的樓將被擋住 輸入描述 輸入第一行將包含乙個數字n,代表樓的...

騰訊2020校園招聘 後台(3)

乙個簡單的動態規劃,注釋寫的很明白了 var n parseint readline var p1 newarray n var p2 newarray n var line readline var lines line.split for let i 0 i n i line readline ...

騰訊2020校園招聘 後台 程式設計題

a 壓縮演算法 做法 遞迴處理每個匹配的 中的單詞,再拼接起來。b 逛街 做法 假設現在在i樓,一定可以看到i 1和i 1的樓,i 往左看是形成的序列是乙個單調增的序列,用單調棧可以求出離當前樓最近,而且高度還要高於當前樓的樓。c 逆序對 做法 把序列的歸併樹畫出來,每一層是由許多段構成的。而每一層...