給定一些標記了寬度和高度的信封,寬度和高度以整數對形式(w, h)
出現。當另乙個信封的寬度和高度都比這個信封大的時候,這個信封就可以放進另乙個信封裡,如同俄羅斯套娃一樣。
請計算最多能有多少個信封能組成一組「俄羅斯套娃」信封(即可以把乙個信封放到另乙個信封裡面)。
說明:
不允許旋轉信封。
示例:
輸入: envelopes = [[5,4],[6,4],[6,7],[2,3]]
輸出: 3
解釋: 最多信封的個數為 3, 組合為: [2,3] => [5,4] => [6,7]。
看到這道題的時候,第一思路是採用拓撲排序,然後採用動態規劃演算法來求解圖中的最長路徑。
但是想到構建乙個有向圖並拓撲排序確實比較麻煩,採用稍微簡化一些的辦法求解。
首先我們可以把所有的信封按寬度從小到大排序,那麼至少可以保證,對所有的i < j
,envelopes[j]
不可能被放入envelopes[j]
。
下面的問題轉化為,在已經排序好的envelopes
陣列中,對所有的j
,找到乙個最長遞增子串行。
class solution );
vectordp(envelopes.size(), 1);
int maxlen = 0;
for(int i = 0; i < envelopes.size(); i++)
return maxlen;
}};
俄羅斯套娃信封問題(LeetCode 354)
給定一些標記了寬度和高度的信封,寬度和高度以整數對形式 w,h 出現。當另乙個信封的寬度和高度都比這個信封大的時候,這個信封就可以放進另乙個信封裡,如同俄羅斯套娃一樣。請計算最多能有多少個信封能組成一組 俄羅斯套娃 信封 即可以把乙個信封放到另乙個信封裡面 說明 不允許旋轉信封。示例 輸入 enve...
leetcode 354 俄羅斯套娃信封問題
目錄 一 題目內容 二 解題思路 三 給定一些標記了寬度和高度的信封,寬度和高度以整數對形式 w,h 出現。當另乙個信封的寬度和高度都比這個信封大的時候,這個信封就可以放進另乙個信封裡,如同俄羅斯套娃一樣。請計算最多能有多少個信封能組成一組 俄羅斯套娃 信封 即可以把乙個信封放到另乙個信封裡面 說明...
Leetcode 354 俄羅斯套娃信封問題
給定一些標記了寬度和高度的信封,寬度和高度以整數對形式 w,h 出現。當另乙個信封的寬度和高度都比這個信封大的時候,這個信封就可以放進另乙個信封裡,如同俄羅斯套娃一樣。請計算最多能有多少個信封能組成一組 俄羅斯套娃 信封 即可以把乙個信封放到另乙個信封裡面 說明 不允許旋轉信封。示例 輸入 enve...