当前位置: 首页 > news >正文

门户类网站图片青岛免费模板建站

门户类网站图片,青岛免费模板建站,263企业邮箱app下载官网,网络热词2023文章目录 1.问题描述2.难度等级3.热门指数4.解题思路边长验证法等腰直角三角形验证法正方形定义 参考文献 1.问题描述 给定 2D 空间中四个点的坐标 p1, p2, p3 和 p4#xff0c;如果这四个点构成一个正方形#xff0c;则返回 true 。 点的坐标 pi 表示为 [xi, yi] 。 输入没… 文章目录 1.问题描述2.难度等级3.热门指数4.解题思路边长验证法等腰直角三角形验证法正方形定义 参考文献 1.问题描述 给定 2D 空间中四个点的坐标 p1, p2, p3 和 p4如果这四个点构成一个正方形则返回 true 。 点的坐标 pi 表示为 [xi, yi] 。 输入没有任何顺序 。 一个「有效的正方形」有四条等边和四个等角90度角。 2.难度等级 Medium。 3.热门指数 ★★★★☆ 出题公司腾讯。 4.解题思路 边长验证法 正方形四个点构成的六条线四边两对角线有如下特征 四边长度相等边长平方和等于对角线平方 根据上面的特点我们可以计算出任意两点之间的距离来判断是否是正方形。 注意判断过程中不用计算出两点实际距离只需要算出距离的平方即可。不然会存在浮点数可能会有精度丢失导致结果出错。 func validSquare(p1 []int, p2 []int, p3 []int, p4 []int) bool {l1 : lenSquare(p1, p2)l2 : lenSquare(p1, p3)l3 : lenSquare(p1, p4)l4 : lenSquare(p2, p3)l5 : lenSquare(p2, p4)l6 : lenSquare(p3, p4)set : map[int]struct{}{}set[l1] struct{}{}set[l2] struct{}{}set[l3] struct{}{}set[l4] struct{}{}set[l5] struct{}{}set[l6] struct{}{}if len(set) ! 2 {return false}var square1, square2 intfor k : range set {if square1 0 {square1 kcontinue}square2 k}if square1 square2 {return square1*2 square2}return square2*2 square1 }func lenSquare(p1, p2 []int) int {x : p1[0] - p2[0]y : p1[1] - p2[1]return x*x y*y }等腰直角三角形验证法 正方形可以将其拆分成四个等腰直角三角形所以枚举由三个点构成的三角形是否时等腰直角三角形即可。 如果三角形两个边相等则为直角边。如果直角边的平方和等于另一条边的平方那么可断定为等腰直角三角形。 func validSquare(p1 []int, p2 []int, p3 []int, p4 []int) bool {return isosceles(p1, p2, p3) isosceles(p1, p2, p4) isosceles(p1, p3, p4) isosceles(p2, p3, p4) }// isosceles 是否等腰直角三角形 func isosceles(p1, p2, p3 []int) bool {l1 : lenSquare(p1, p2)l2 : lenSquare(p1, p3)l3 : lenSquare(p2, p3)// 边长为 0 直接返回 falseif l1 0 || l2 0 || l3 0 {return false}if l1 l2 {return l1 l2 l3 l2 l3}if l2 l3 {return l2 l1 l3 l1 l3}if l3 l1 {return l3 l1 l2 l1 l2}return false }func lenSquare(p1, p2 []int) int {x : p1[0] - p2[0]y : p1[1] - p2[1]return x*x y*y }正方形定义 正方形是特殊的平行四边形。 对角线相等且垂直的平行四边形是正方形。 如果两条对角线的中点相同则说明四边形为「平行四边形」。在满足「条件一」的基础上如果两条对角线长度相同则说明四边形为「矩形」。在满足「条件二」的基础上如果两条对角线相互垂直则说明四边形为「正方形」。 func checkLength(v1, v2 []int) bool {return v1[0]*v1[0]v1[1]*v1[1] v2[0]*v2[0]v2[1]*v2[1] }func checkMidPoint(p1, p2, p3, p4 []int) bool {return p1[0]p2[0] p3[0]p4[0] p1[1]p2[1] p3[1]p4[1] }func calCos(v1, v2 []int) int {return v1[0]*v2[0] v1[1]*v2[1] }func help(p1, p2, p3, p4 []int) bool {v1 : []int{p1[0] - p2[0], p1[1] - p2[1]}v2 : []int{p3[0] - p4[0], p3[1] - p4[1]}return checkMidPoint(p1, p2, p3, p4) checkLength(v1, v2) calCos(v1, v2) 0 }func validSquare(p1, p2, p3, p4 []int) bool {// p1 和 p2 为同一个点if p1[0] p2[0] p1[1] p2[1] {return false}// p1 与 p2 构成对角线if help(p1, p2, p3, p4) {return true}// p1 和 p3 为同一个点if p1[0] p3[0] p1[1] p3[1] {return false}// p1 与 p3 构成对角线if help(p1, p3, p2, p4) {return true}// p1 和 p4 为同一个点if p1[0] p4[0] p1[1] p4[1] {return false}// p1 与 p4 构成对角线if help(p1, p4, p2, p3) {return true}return false }参考文献 593. 有效的正方形 - LeetCode
http://www.zqtcl.cn/news/282876/

相关文章:

  • 深圳营销型网站建设公司搜狗短网址生成
  • 如何优化购物网站建设广州seo公司排行
  • iis5.1 新建网站舆情系统的作用
  • 北京国互网网站建设公司东莞寮步搬家公司
  • 学校门户网站是什么意思做网站的意义大不大
  • 做网站卖酒网站内容建设的布局和结构
  • 效果图在哪个网站可以找比较好wordpress网站背景设置
  • 专业整站优化韩国设计公司网站
  • 网站建设与规划学的心得体会WordPress主题启用出现错误
  • 网站建设 资讯宁波东方论坛首页
  • 东莞网站制作有名 乐云践新郑州官方网
  • 网站开发经理具备什么知识调查问卷网站建设
  • 做购买网站企业宣传片制作拍摄
  • logo艺术字转换器徐州seo企业
  • 禹城网站建设公司湖州城市投资建设集团网站
  • 上海城乡住房建设厅网站asp网站怎么做301定向
  • 惠州免费网站建设上海家装10强名单
  • 新手学习做网站电子商务网站建设与维护实验报告
  • 网站建设制作设计推广上海职业技能培训机构
  • 网站不同颜色网站无障碍的建设方面空缺
  • 手机网站织梦模板it初学者做网站
  • asp做的网站怎么发布企业黄页网站源码
  • 在云服务器上搭建网站云端视差wordpress企业主题破解版
  • 英德市住房城乡建设网站图片设计公司
  • 网站建设分金手指专业十七wordpress 审核
  • 怎么欣赏一个网站设计图网站传送门怎么做
  • 网站有什么组成上海做推广网站
  • 网站上传大马后怎么做管理咨询公司口号
  • 网站集约整合建设交流雅虎网站提交入口
  • 网站安全建设必要性网站登录页面