想问一下有大佬在谷歌工作过吗?在谷歌工作是什么体验?
資深大佬 : zzzrf 2
今天刷题刷到一份谷歌的面试真题,做着做着我就离题了,突然很好奇在谷歌上班是什么样的体验。
因为大家都说 Google 是著名的“养老”大厂,但是,去谷歌就能养老了吗?大家工作的氛围是怎么样的?
别说我不好好刷题净瞎想,放个题解证明自己还是有认真做完题目的~
- 懒得复制了,原题在这里
其实这个问题做法有很多,在此仅提供一种思路。
这里可以将连线轨迹形成一个矩形,判断矩形和 B 是否相交。然后在起点和终点特殊判断。
class Solution: """ @param position: the position of circle A,B and point P. @return: if two circle intersect return 1, otherwise -1. """ #叉积 AB×AC def xmult(self, B, C, A): return (B[0] - A[0])*(C[1] - A[1]) - (C[0] - A[0])*(B[1] - A[1]) #两点间距离 def distance(self, A, B): return math.sqrt((A[0] - B[0])*(A[0] - B[0]) + (A[1] - B[1])*(A[1] - B[1])) #点 A 到直线 BC 距离 def dis_ptoline(self, A, B, C): return abs(self.xmult(A,B,C))/self.distance(B,C) def IfIntersect(self, position): A = [position[0], position[1]] ra = position[2] B = [position[3], position[4]] rb = position[5] P = [position[6], position[7]] #过点 B 作直线 AP 的垂线,M 为该垂线上一点( A 和 P 不重合时 M 点不与 B 重合) M = [B[0] - (P[1] - A[1]), B[1] + (P[0] - A[0])] dmin = 0.0 dmax = 0.0 #若圆 A 移动过程中会经过 B 点到直线 AP 垂线的交点 if self.xmult(A, B, M) * self.xmult(B, P, M) > 0 : dmin = self.dis_ptoline(B, A, P) else : dmin = min(self.distance(A, B), self.distance(P, B)) dmax = max(self.distance(A, B), self.distance(P, B)) if dmin > ra + rb or dmax < abs(ra - rb): return -1 return 1
大佬有話說 (0)