Diretório do artigo
plano de título escova gráfico LeetCode
1, EDITORIAL
série de desenhos animados pintados à mão lançou formalmente! ! ! "Escova gráfico do título plano LeetCode" vir! ! !
Hoje é o quinto, por um dia, até dois dias um, bem-vindo para me vigiar. . . Sem supervisão pública dos melhores! ! !
Hoje é o algoritmo guloso, bem como deliciosa ~
2, título
Primeiro, olhe para o título,
deve primeiro pensar do primeiro algoritmo guloso tempo, por quê?
Se você quiser subir seqüências tanto tempo quanto possível, então devemos deixar a seqüência sobe mais lentamente possível (de preferência apenas uma alteração 1).
Porque eu não tenho algoritmos conclusão. . . Programação Dinâmica não aprendeu. . . Este período será longo experimentá-lo!
Capital miserável palavra!
algoritmo guloso (também conhecido como o algoritmo guloso) significa que, quando a resolução de problemas, sempre nos aparece atuais para ser a melhor escolha.
3, o corpo
Em primeiro lugar, analisar a situação,
Aqui a coisa mais importante é a ideia de que o algoritmo guloso - considerar se você quiser a seqüência a subir tanto tempo quanto possível, em seguida, deixar subir possível seqüência de lento, por isso é necessário para gravar um array, que é d
.
Atravessar a matriz inteira olhando para a sequência ascendente, enquanto a próxima maior elemento do que o último elemento na primeira leitura, em seguida, d
guardado no final do aumento mínimo mais longo do sub-elemento da comparação de sequências, se eles podem encontrar o algoritmo guloso, na entrada, e assim por diante.
Aqui pessoas batem palmas wow --3 um ponto é, eu não sei por que você ver a coisa?
complexidade:
- Tempo Complexidade:
. ordem
comprimento
n
, busca binária é . - complexidade Space:
, o comprimento da
n
matrizd
.
4, o código
int lengthOfLIS(int* nums, int numsSize){
int len = 1;
if (numsSize == 0) return 0;
int d[numsSize+1];
d[len] = nums[0];
for (int i = 1; i < numsSize; ++i) {
if (nums[i] > d[len]){
d[++len] = nums[i];
}
else{
int l = 1, r = len, pos = 0;
while (l <= r) {
int mid = l + (r - l)/2;
if (d[mid] < nums[i]) {
pos = mid;
l = mid + 1;
}
else {
r = mid - 1;
}
}
d[pos + 1] = nums[i];
}
}
return len;
}
5, para discutir
1, em sentido estrito, este problema de busca binária e nada de particularmente grande relacionamento, 23333.
Com a visão de um caso de estudá-lo:
2. Por leque d
Se d[numsSize+1]
?
A razão pela qual é simples, de modo a assegurar a sincronização subscrito.
3, a matriz d
aumenta uniformemente coisa?
Solução para um problema na LeetCode assistiu, sentindo-se não tão bom como evidência direta ao contrário vêm rápido, d
de fato, a mais longa sequência que precisamos, porque ele está subindo, então naturalmente está aumentando.
Se você tiver a oportunidade de ajudá-lo, por favor me ajude [como] um ponto, a uma [atenção]! Se eu puder aliás [comentário] dar incentivo, eu agradeceria.
Se você quiser mais recursos, bem-vindo! Eu estou preocupado com a luz do tubo pequeno, texto transtorno obsessivo-compulsivo MAX ~
Responder [estruturas de dados] para obter dom eu fiz para você.
Quer ver mais texto (segmento) Seção (sub), congratulou-se o foco em micro-channel número público "programador pequeno tubo de luz" ~