ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[LeetCode] 812. Largest Triangle Area_Easy tag: math

2021-06-06 13:04:43  阅读:229  来源: 互联网

标签:xa Triangle Area xb xc yc yb 0.5 tag


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.

 

Code:

利用itertools.combinations

同时利用

image

使OC为横轴, OB为纵轴, OBC成为直角三角形

S abc = S aob + S boc + S coa

          = 0. 5* OB * 高  + 0.5 * OB * OC  + 0.5 * OC * 高

          = 0.5 * (yc - yb) * (xb - xa)  + 0.5 * (yc - yb) * (xc - xb)  + 0.5 * (xc - xb) * (ya - yc)

          = 0.5 * (yc - yb) * (xb - xa)  +  0.5 * (xc - xb) * (yc - yb + ya - yc)

          = 0.5 * (yc - yb) * (xb - xa) + 0.5 * (xc - xb) *(ya - yb)

          = 0.5 (xa*yb + xb*yc + xc*ya - xa*yc - xc*yb - xb*ya)

          规律是三个相加,再三个相减,ab,bc,ca,ac,cb,ba 也是对称的

T: O(n ^3)

def largestTriangleArea(self, p):
        return max(0.5 * abs(xa*yb + xb*yc + xc*ya - xb*ya - xc*yb - xa*yc) for (xa, ya), (xb, yb), (xc, yc) in itertools.combinations(p, 3))

 

标签:xa,Triangle,Area,xb,xc,yc,yb,0.5,tag
来源: https://www.cnblogs.com/Johnsonxiong/p/14855070.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有