news 2026/1/27 6:55:39

leetcode 3453. 分割正方形 I 中等

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 3453. 分割正方形 I 中等

给你一个二维整数数组squares,其中squares[i] = [xi, yi, li]表示一个与 x 轴平行的正方形的左下角坐标和正方形的边长。

找到一个最小的y 坐标,它对应一条水平线,该线需要满足它以上正方形的总面积等于该线以下正方形的总面积。

答案如果与实际答案的误差在10^-5以内,将视为正确答案。

注意:正方形可能会重叠。重叠区域应该被多次计数

示例 1:

输入:squares = [[0,0,1],[2,2,1]]

输出:1.00000

解释:

任何在y = 1y = 2之间的水平线都会有 1 平方单位的面积在其上方,1 平方单位的面积在其下方。最小的 y 坐标是 1。

示例 2:

输入:squares = [[0,0,2],[1,1,1]]

输出:1.16667

解释:

面积如下:

  • 线下的面积:7/6 * 2 (红色) + 1/6 (蓝色) = 15/6 = 2.5
  • 线上的面积:5/6 * 2 (红色) + 5/6 (蓝色) = 15/6 = 2.5

由于线以上和线以下的面积相等,输出为7/6 = 1.16667

提示:

  • 1 <= squares.length <= 5 * 10^4
  • squares[i] = [xi, yi, li]
  • squares[i].length == 3
  • 0 <= xi, yi <= 10^9
  • 1 <= li <= 10^9
  • 所有正方形的总面积不超过10^12

分析:浮点二分答案,设当前的上界为 r,下界为 l,中线为 mid。分别计算当前答案的上方和下方面积和,如果面积差小于 10 的 -5 次方,则可将 r=mid;否则 l=mid。因为题目要求答案误差范围在 10 的 -5 次方内,所以结束条件为 r-l<0.00001。

double separateSquares(int** squares, int squaresSize, int* squaresColSize) { double ans=0; int low=squares[0][1],high=squares[0][1]+squares[0][2]; for(int i=1;i<squaresSize;++i) low=fmin(low,squares[i][1]),high=fmax(high,squares[i][1]+squares[i][2]); double l=low,r=high; while(l<r) { double mid=(l+r)/2.0,area_l=0.0,area_h=0.0; for(int i=0;i<squaresSize;++i) { if(mid<=squares[i][1])area_h+=1.0*squares[i][2]*squares[i][2]; else if(mid>=squares[i][1]+squares[i][2])area_l+=1.0*squares[i][2]*squares[i][2]; else { double temp=squares[i][2]*1.0*(squares[i][1]+squares[i][2]-mid); area_h+=temp,area_l+=1.0*squares[i][2]*squares[i][2]-temp; } } if(area_h<=area_l)r=mid; else if(area_h>area_l)l=mid; // printf("l=%f r=%f mid=%f\n",l,r,mid); if(r-l<=0.00001) { ans=l;break; } } return ans; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/17 1:59:19

并发,并行与异步

我发现一个普遍的困惑点浮现出来&#xff0c;其根源在于混淆了“并发”、“并行”与“异步”&#xff0c;特别是下意识地将异步等同于利用多核CPU进行并行处理。 为了彻底澄清这些基础但至关重要的概念&#xff0c;我们深入剖析理论原则并且同时抛开我们日常使用的现代框架&am…

作者头像 李华
网站建设 2026/1/20 23:04:10

2026论文写作AI工具实测:全流程提效不踩坑

2026年&#xff0c;AI工具早已深度融入学术写作场景&#xff0c;成为科研人、学生提升效率的重要助力。但市面上论文类AI工具鱼龙混杂&#xff0c;宣传噱头远大于实用价值的产品不在少数。究竟哪些工具能真正解决选题迷茫、格式混乱、文献难寻、排版耗时等核心痛点&#xff1f;…

作者头像 李华
网站建设 2026/1/23 8:41:35

可观察的到底是个啥?前端老铁速看,别再被 RxJS 整懵了!

可观察的到底是个啥&#xff1f;前端老铁速看&#xff0c;别再被 RxJS 整懵了&#xff01; 可观察的到底是个啥&#xff1f;前端老铁速看&#xff0c;别再被 RxJS 整懵了&#xff01;先别急着关页面&#xff0c;我不是来背概念的Promise 咋就不够用了&#xff1f;我踩过的坑你别…

作者头像 李华
网站建设 2026/1/26 19:53:59

《UVA11181 条件概率 Probability|Given》

题目描述 PDF 输入格式 输出格式 隐藏翻译 题意翻译 有 n 个人要去买东西&#xff0c;第 i 个人买到东西的概率为 pi​。现在已知恰好有 r 个人买了东西&#xff0c;在这种条件下&#xff0c;求每个人买到东西的概率。 本题有多组数据&#xff0c;满足测试数据组数不超过 5…

作者头像 李华