LeetCode algoritmo de solución efectiva a un problema 1037- bumerán

título Descripción

solución:

Este título tiene múltiples soluciones:

  1. Los puntos pueden constituir una línea recta, y después determina si el tercer punto en esta línea recta a
  2. Si los tres puntos de la zona en una línea recta, así que asegúrese de que se compone de cero, si no en una línea recta, el área no es cero.

código:

class Solution {
public:
    bool isBoomerang(vector<vector<int>>& points) {
        int x1,y1;
        x1 = points[0][0]; y1 = points[0][1];
        int x2,y2;
        x2 = points[1][0]; y2 = points[1][1];
        int x3,y3;
        x3 = points[2][0]; y3 = points[2][1];
        /* 方法一:直线法
        if((y3 - y1)*(x1 - x2) == (y1 - y2)*(x3 - x1))
        {
            return false;
        }
        else
        {
            return true;
        }*/
        /* 方法二:面积法(已知三点直接求出三角形的面积)
        */
        int res = abs(x1*y2 + y1*x3 + x2*y3 - x1*y3 - y1*x2 - y2*x3);
        double area = 1.0*res/2;// 计算三角形面积的两倍(一定是整形,后面再/2就可以了)
        if(area == 0)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
};
Ha publicado 197 artículos originales · ganado elogios 18 · vistas 20000 +

Supongo que te gusta

Origin blog.csdn.net/qq_41708792/article/details/104466547
Recomendado
Clasificación