力扣:11. 盛最多水的容器

o18_99_1 2023-05-25 21:47:31
#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

 

...全文
66 5 打赏 收藏 转发到动态 举报
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
programmer_ada 3天前
精选
  • 打赏
  • 举报
回复
您的问题已经帮您同步至问答, 链接: https://ask.csdn.net/questions/7951748, 请您保持关注, 如果回答有帮助解决此问题, 麻烦您动动小手给相关的回答点赞, Ada会在评论区为您更新结题状态
于扶摇 23小时前
  • 打赏
  • 举报
回复

要让p2指向传入数组的最后一个元素,可以将p2的初始值设置为height + heightSize - 1,即&height[heightSize - 1]。这样,在循环中每次移动指针时,p2就会指向数组的最后一个元素。

forever74 2天前
  • 打赏
  • 举报
回复

数量这玩意只能传进来,不传进来谁知道有几个

forever74 2天前
  • 举报
回复
@forever74 第二参数难道不是做这个的么?
o18_99_1 2天前
  • 举报
回复
@forever74 int *p2 = &height[heightSize-1];我之前这样写打错了,

68,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告