You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

凸多边形最大x值顶点的O(logn)二分查找思路验证

你的思路完全正确

针对这种逆时针排列、首元素为最左x值顶点的凸多边形,顶点的x值确实呈现单峰分布:从起点到最右顶点(最大x值),x值严格递增;从最右顶点回到起点,x值严格递减。这个结构完全符合你说的“两段式”划分,用改进的二分查找定位峰值(最大x顶点)是当前最高效的实现方式,时间复杂度为O(log n),远优于线性遍历的O(n)。

二分查找的核心判断逻辑

在二分过程中,只需比较中间位置mid和mid+1的顶点x值,就能快速缩小搜索范围:

  • 若vertices[mid][0] < vertices[mid+1][0]:说明最大x顶点在[mid+1, right]区间内;
  • 若vertices[mid][0] > vertices[mid+1][0]:说明最大x顶点在[left, mid]区间内;
  • 凸多边形的性质保证不会出现连续两个顶点x值相等且为极值的情况,因此无需处理相等分支。

伪代码示例

def find_max_x_vertex(vertices):
    left = 0
    right = len(vertices) - 1
    while left < right:
        mid = (left + right) // 2
        if vertices[mid][0] < vertices[mid+1][0]:
            left = mid + 1
        else:
            right = mid
    return vertices[left]

这个实现能精准定位到最大x值的顶点,完全适配你描述的凸多边形结构。

内容的提问来源于stack exchange,提问作者Loosos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:04:56