Data: 2020-10-25
Autor: 19th LZ
Tag: Ponteiro duplo JAVA
Descrição do título
Fornece n inteiros não negativos a1, a2, ..., an, cada um dos quais representa um ponto (i, ai) nas coordenadas. Desenhe n linhas verticais nas coordenadas. Os dois pontos finais da linha vertical i são (i, ai) e (i, 0). Encontre duas das linhas de modo que o recipiente que elas formam com o eixo x possa conter mais água.
Explicação: Você não pode inclinar o contêiner e o valor de n é pelo menos 2.
Exemplo:
示例:
输入:[1,8,6,2,5,4,8,3,7]
输出:49
Idéias para resolução de problemas: ponteiro duplo
max=Math.max((Math.min(height[left],height[right])*(right-left)),max);
if(height[left]<=height[right]){
left++;
}else{
right--;
}
Código
class Solution {
public int maxArea(int[] height) {
int n=height.length;
if(n<2){
return 0;
}
int left=0;
int right=n-1;
int max=0;
while(left!=right){
max=Math.max((Math.min(height[left],height[right])*(right-left)),max);
if(height[left]<=height[right]){
left++;
}else{
right--;
}
}
return max;
}
}