三点最大夹角
三点最大夹角
2026/7/16
题意简述
在给定的 个互异的点中选出三个点 ,使得 最大.
,.
思路
朴素解法
枚举所有三点组合 ,时间复杂度 .
优化思路
枚举顶点 ,计算其余的点相对于 的极角,寻找极角之差最接近且不大于 的点对 .
具体步骤:外层循环枚举 j ,内层循环通过 atan2(dy, dx) 计算极角并排序,用双指针寻找 的最大差值,时间复杂度 .
细节上,处理跨越 / 边界的夹角时,可以通过
- 常见的环形问题处理方法:将原数组的数据加上 复制一遍拼接在数组尾部(“破环成链”)
- 补充用
2 * PI - (angles[r] - angles[l])更新答案,其中(angles[r] - angles[l])为双指针找到的 的最小差值(注意检查下标越界)
代码实现
基于 2. 的实现:
cpp
|
|
基于 1. 的实现对上述代码 L16-L22 做如下修改即可:
cpp
|
|