力扣每日一题小记(812. 最大三角形面积)

题目与示例

题目
题目内容
给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。
来源:力扣(LeetCode)

示例 1:
输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]
输出: 2
解释:

这五个点如下图所示。组成的橙色三角形是最大的,面积为2。



一、思路

我们利用海伦公式来求解此题,使用暴力算法进行搜索,最后返回面积最大的三角形面积即可

二、解题代码

解题代码如下:

class Solution {
public:
    double Area(int x1, int x2, int x3, int y1, int y2, int y3) {
        double a = sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
        double b = sqrt(pow(x2 - x3, 2) + pow(y2 - y3, 2));
        double c = sqrt(pow(x1 - x3, 2) + pow(y1 - y3, 2));
        double p = (a + b + c) / 2;
        double area = sqrt(p * (p - a) * (p - b) * (p - c));
        return area;
    }
    double largestTriangleArea(vector<vector<int>>& points) {
        double res = 0.0;
        for(int i = 0; i < points.size(); i++){
            for(int j = 0; j < i; j++){
                for(int k = 0; k < j; k++){
                    int x1 = points[i][0];  
                    int y1 = points[i][1];
                    int x2 = points[j][0]; 
                    int y2 = points[j][1];
                    int x3 = points[k][0];
                    int y3 = points[k][1];
                    res = max(res, Area(x1,x2,x3,y1,y2,y3));
                }
            }
        }
        return res;
    }
};

注:以上部分内容源自力扣,解题方法为个人想法,如有错误还请大家指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值