Container With Most Water &
Updated:
Contents
开始用遍历,最后一组数据超时了。
然后看了一下题解。。。
用2个指针i,j指向头尾。要使面积增大,要么增加长度,要么增加高度。当长度为头尾时最长。
当i,j向中间移动时,要使面积增大,则高度要增大。
所以,当i,j处于最优位置的时候,假设i < j,在j的右边,没有比j更高的长度了。在i的左边,没有比更高的长度了。
|
| |
|—-|——-|——|—
i j
public static int maxArea(int[] height) {
int maxS = 0;
int temp = 0;
int i = 0, j = height.length -1;
while(i < j){
temp = min(height[j],height[i]) * (j - i);
maxS = temp > maxS ? temp : maxS;
if(height[i] > height[j]){
j--;
}else{
i++;
}
}
return maxS;
}
public static int min(int a, int b){
return a <= b ? a : b;
}
判断2个二叉树是不是相等
public boolean isSameTree(TreeNode p, TreeNode q) {
if(null == p && null == q){
return true;
}
if(null == p || null == q){
return false;
}
return p.val == q.val && isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
}