原题说明
You have a list of points in the plane. Return the area of the largest triangle that can be formed by any 3 of the points.
Example:
Input: points =[[0,0],[0,1],[1,0],[0,2],[2,0]]
Output: 2
Explanation:
The five points are show in the figure below. The red triangle is the largest.
Notes:
3 <= points.length <= 50
.- No points will be duplicated.
-50 <= points[i][j] <= 50
.- Answers within 10^-6 of the true value will be accepted as correct.
解题思路
这道题主要考察解析几何中三角形面积的计算(如叉乘计算面积, 行列式计算面积
), 也比较适合Google电话面试或者Intern面试的难度, 可能会用来考察简历有相关背景的面试者.
做法上比较暴力, 直接三重循环找到所有可能组成三角形的点计算最大面积即可, 还是要求快速形成思路, 代码清晰, 建议把叉乘部分单独写成一个Function, 这样做即使面试时叉乘公式不记得了, 但是整体思路清晰, 也可能会过面试.
示例代码 (cpp)
1 | class Solution { |
示例代码 (python)
1 | class Solution(object): |
复杂度分析
时间复杂度: O(N^3)
空间复杂度: O(1)
归纳总结
谷歌有时候会考察矩阵叉乘, 点乘相关的知识点, 面试的时候即使不记得也可以问面试官要提示, 当然如果自己能够记得肯定是加分的. 之后会整理相关的考题.