69,833
社区成员




#define MAX(x,y) ((x) > (y) ? (x) : (y))
#define MIN(x,y) ((x) < (y) ? (x) : (y))
int maxArea(int* height, int heightSize){
int *p1 = height;
int *p2 = &height[sizeof(height)/sizeof(int)-1];
int num = 0;//保存最大值
while(p1 < p2){
ptrdiff_t offset = (ptrdiff_t)p2 - (ptrdiff_t)p1;
int a = offset/sizeof(int);
num = MAX((MIN(*p1,*p2)*a) , num) ;
if(*p1 < *p2)
{
p1++;
}
else
{
p2--;
}
}
return num;
}
int *p2 = &height[sizeof(height)/sizeof(int)-1];怎样让p2指向传入数组最后一个元素啊,我这样写的话sizeof(height)算8
要让p2指向传入数组的最后一个元素,可以将p2的初始值设置为height + heightSize - 1,即&height[heightSize - 1]。这样,在循环中每次移动指针时,p2就会指向数组的最后一个元素。