LeetCode 812. 最大三角形面積

寫在前面: 三個for循環暴力求解,用到了高中學過的海倫公式,吐槽一下力扣C++測試點又bug了,本地執行代碼過了測試點,然後提交平臺給我報錯。。。這種水題害我調試半天,還是改點代碼用JS寫一把過的

這是我的 力扣github倉庫 ,有JavaScript和C++兩個版本,每日更新。覺得有用的朋友請點點star~

C++代碼

class Solution {
public:
    double largestTriangleArea(vector<vector<int>>& points) {
        int len=points.size();
        int m=0;
        for(int i=0;i<len;i++){
            double i_x=points[i][0],i_y=points[i][1];
            for(int j=i+1;j<len;j++){
                double j_x=points[j][0],j_y=points[j][1];
                for(int k=j+1;k<len;k++){
                    double k_x=points[k][0],k_y=points[k][1];
                    double len1 = length(i_x,i_y,j_x,j_y);
                    double len2 = length(i_x,i_y,k_x,k_y);
                    double len3 = length(j_x,j_y,k_x,k_y);
                    double areas=area(len1,len2,len3);
                    if(m<areas){    //這裏力扣平臺判斷有問題
                        // cout<<areas<<" ";
                        m=areas;
                        // cout<<m<<endl;
                    }
                }
            }
        }    
        return m;
    }

    double length(double s1_x,double s1_y,double s2_x,double s2_y){
         return sqrt(pow(s1_x-s2_x,2)+pow(s1_y-s2_y,2));       
    }

    double area(double a,double b,double c){
        double sum=(a+b+c)/2.0;
        return pow(sum*(sum-a)*(sum-b)*(sum-c),0.5);
    }
};

JS代碼:

/**
 * @param {number[][]} points
 * @return {number}
 */
var largestTriangleArea = function(points) {
        var len=points.length;
        var m=0;
        for(var i=0;i<len;i++){
            var i_x=points[i][0],i_y=points[i][1];
            for(var j=i+1;j<len;j++){
                var j_x=points[j][0],j_y=points[j][1];
                for(var k=j+1;k<len;k++){
                    var k_x=points[k][0],k_y=points[k][1];
                    var len1 = length(i_x,i_y,j_x,j_y);
                    var len2 = length(i_x,i_y,k_x,k_y);
                    var len3 = length(j_x,j_y,k_x,k_y);
                    var areas=area(len1,len2,len3);
                    if(m<areas){
                        m=areas;
                    }
                }
            }
        }    
        return m;
};

    function length(s1_x,s1_y,s2_x,s2_y){
         return Math.sqrt(Math.pow(s1_x-s2_x,2)+Math.pow(s1_y-s2_y,2));       
    }

    function area(a,b,c){
        var sum=(a+b+c)/2.0;
        return Math.pow(sum*(sum-a)*(sum-b)*(sum-c),0.5);
    }

題目地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章