前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 469. 凸多边形(向量叉积)

LeetCode 469. 凸多边形(向量叉积)

作者头像
Michael阿明
发布2021-02-19 10:53:52
9030
发布2021-02-19 10:53:52
举报
文章被收录于专栏:Michael阿明学习之路

文章目录

1. 题目

给定一个按顺序连接的多边形的顶点,判断该多边形是否为凸多边形

代码语言:javascript
复制
注:
顶点个数至少为 3 个且不超过 10,000。
坐标范围为 -10,000 到 10,000。
你可以假定给定的点形成的多边形均为简单多边形。
换句话说,保证每个顶点处恰好是两条边的汇合点,并且这些边 互不相交 。
代码语言:javascript
复制
示例 1:
[[0,0],[0,1],[1,1],[1,0]]
输出: True
解释:
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
示例 2:
[[0,0],[0,10],[10,10],[10,0],[5,5]]
输出: False
解释:
在这里插入图片描述
在这里插入图片描述

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/convex-polygon 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

平面向量 向量积 定义 【平面向量】向量的叉积与三角形的面积

  • 注意叉乘为0表示两个向量共线
代码语言:javascript
复制
[[0,0],[0,1],[1,1],[2,1],[2,2],[2,3],[3,3],[3,0]]
false
[[0,0],[1,0],[1,1],[-1,1],[-1,0]]
true
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
class Solution {
public:
    bool isConvex(vector<vector<int>>& points) {
    	long long cur, prev = 0;
    	int i, n = points.size();
    	long long x1, y1, x2, y2;
    	for(i = 0; i < n; i++) 
    	{
    		x1 = points[i][0]-points[(i+1)%n][0];
    		y1 = points[i][1]-points[(i+1)%n][1];
    		x2 = points[i][0]-points[(i+2)%n][0];
    		y2 = points[i][1]-points[(i+2)%n][1];
    		cur = x1*y2-x2*y1;
            if(cur != 0)//两向量不共线
            {
                if(cur*prev < 0)//跟上次的方向不一样
                    return false;
                prev = cur;
            }
    	}
    	return true;
    }
};

64 ms 15.5 MB

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/08/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1. 题目
  • 2. 解题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档