354. LeetCode problemas Matryoshka del sobre (la subida más larga subsecuencia DP / búsqueda binaria)

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

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

Publicados 820 artículos originales · ganado elogios 1791 · Vistas de 410.000 +

Supongo que te gusta

Origin blog.csdn.net/qq_21201267/article/details/105370146
Recomendado
Clasificación