【LeetCode】每日一题——1610. 可见点的最大数目
题目:
思路:
我想先算出每个点和定点和x轴的角度 然后这些角度排序 然后将最小的加90度看有 这些角度有多少在这个区间 依次这样下去 然后去最大的 这个90度 (就是那个angle)
代码:
class Solution: def visiblePoints(self, points: List[List[int]], angle: int, location: List[int]) -> int: samecnt = 0 polardegress = [] for p in points: if p == location: samecnt += 1 else: polardegress.append(atan2(p[1]-location[1],p[0]-location[0])) polardegress.sort() n = len(polardegress) polardegress += [deg +2*pi for deg in polardegress] drgree = angle * pi /180 maxcnt = max((bisect_right(polardegress,polardegress[i]+drgree) -i for i in range(n)),default=0) return maxcnt+samecnt
分析:
关于bisect
上一篇:
92天倒计时,蓝桥杯省赛备赛攻略来啦~
下一篇:
一位工作一年的程序员的2021年度总结