1. Tema
Dada la anchura y la altura de algunas etiquetas sobre, anchura y altura en forma de número entero (w, h) aparece.
Cuando otro anchura del sobre y la altura son de este sobre grande de tiempo, puede poner el sobre en otro sobre, como las muñecas rusas mismos.
Por favor, la computación puede tener hasta el número de sobres puede estar compuesto por un conjunto de sobres "Matryoshka" (que puede poner un sobre en el interior de otro sobre).
Nota:
Sin rotación envolvente .
示例:
输入: envelopes = [[5,4],[6,4],[6,7],[2,3]]
输出: 3
解释: 最多信封的个数为 3, 组合为: [2,3] => [5,4] => [6,7]。
Fuente: estancia botón (LeetCode)
enlace: https: //leetcode-cn.com/problems/russian-doll-envelopes
propiedad de la deducción de todas las redes. reimpresión comercial póngase en contacto con la reimpresión autorizada oficial, no comercial por favor indique la fuente.
2. Resolución de Problemas
- Con el mayor aumento subsecuencia
- Lo mismo Título: Programador Entrevista de Oro - 17.08 Circo columna de preguntas cara humana (la más larga subida subsecuencia DP / búsqueda binaria)
- Aplicación de Programación Dinámica - el más largo el aumento LeetCode subsecuencia 300
DP no escritura, la eficiencia óptima está escribiendo búsqueda binaria, DP referencia escrita sobre el enlace de arriba
class Solution {
public:
int maxEnvelopes(vector<vector<int>>& envelopes) {
sort(envelopes.begin(), envelopes.end(),[&](auto a, auto b){
if(a[1]==b[1])
return a[0] > b[0];//相等情况下,另一分量逆序
return a[1] < b[1];//【1】分量有序了
});
int i, idx=0, n = envelopes.size();
vector<int> dp(n);
for(i = 0; i < n; ++i)
{
auto it = lower_bound(dp.begin(),dp.begin()+idx,envelopes[i][0]);
*it = envelopes[i][0];
if(it-dp.begin() == idx)
idx++;
}
return idx;
}
};
412 ms 47,9 MB