[Swift]LeetCode593. 有效的正方形 | Valid Square
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10450189.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
Given the coordinates of four points in 2D space, return whether the four points could construct a square.
The coordinate (x,y) of a point is represented by an integer array with two integers.
Example:
Input: p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,1] Output: True
Note:
- All the input integers are in the range [-10000, 10000].
- A valid square has four equal sides with positive length and four equal angles (90-degree angles).
- Input points have no order.
给定二维空间中四点的坐标,返回四点是否可以构造一个正方形。
一个点的坐标(x,y)由一个有两个整数的整数数组表示。
示例:
输入: p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,1] 输出: True
注意:
- 所有输入整数都在 [-10000,10000] 范围内。
- 一个有效的正方形有四个等长的正长和四个等角(90度角)。
- 输入点没有顺序。
1 class Solution { 2 func validSquare(_ p1: [Int], _ p2: [Int], _ p3: [Int], _ p4: [Int]) -> Bool { 3 var s:Set<Int> = [d(p1, p2), d(p1, p3), d(p1, p4), d(p2, p3), d(p2, p4), d(p3, p4)] 4 return !s.contains(0) && s.count == 2 5 } 6 7 func d(_ p1:[Int],_ p2:[Int]) -> Int 8 { 9 return (p1[0] - p2[0]) * (p1[0] - p2[0]) + (p1[1] - p2[1]) * (p1[1] - p2[1]) 10 } 11 }
12ms
1 class Solution { 2 func validSquare(_ p1: [Int], _ p2: [Int], _ p3: [Int], _ p4: [Int]) -> Bool { 3 var dict = [Int: Int]() 4 let distances = [dist(p1, p2), dist(p1, p3), dist(p1, p4), dist(p2, p3), dist(p2, p4), dist(p3, p4)] 5 var maxDist = -1 6 for dist in distances { 7 maxDist = max(maxDist, dist) 8 dict[dist] = dict[dist, default: 0] + 1 9 } 10 if (dict[maxDist] == 2 && dict.count == 2) { 11 return true 12 } 13 return false 14 } 15 16 func dist(_ p1: [Int], _ p2: [Int]) -> Int { 17 return (p1[0]-p2[0]) * (p1[0]-p2[0]) + (p1[1]-p2[1]) * (p1[1]-p2[1]) 18 } 19 }
16ms
1 import Foundation 2 3 class Solution { 4 func validSquare(_ p1: [Int], _ p2: [Int], _ p3: [Int], _ p4: [Int]) -> Bool { 5 let points : [[Int]] = [p1,p2,p3,p4] 6 var totalsum = 0 7 var sums : [Double] = [] 8 9 if Set(points).count != points.count { 10 return false 11 } 12 13 func get_distance(_ d1:[Int],_ d2: [Int]) -> Double { 14 let dist = sqrt(pow((Double(d1[0])-Double(d2[0])),2)+pow((Double(d1[1])-Double(d2[1])),2)) 15 return dist 16 } 17 18 for i in Range(0...points.count - 1) { 19 if i == points.count - 1 { 20 break 21 } 22 for j in Range(i+1...points.count - 1) { 23 let d = get_distance(points[i],points[j]) 24 sums.append(d) 25 } 26 } 27 if Set(sums).count == 2 { 28 return true 29 } else { 30 return false 31 } 32 } 33 }
20ms
1 class Solution { 2 func validSquare(_ p1: [Int], _ p2: [Int], _ p3: [Int], _ p4: [Int]) -> Bool { 3 4 var distanceArray: [Int] = [] 5 6 distanceArray.append(distanceBetween(p1: p1, p2: p2)) 7 distanceArray.append(distanceBetween(p1: p1, p2: p3)) 8 distanceArray.append(distanceBetween(p1: p1, p2: p4)) 9 distanceArray.append(distanceBetween(p1: p2, p2: p3)) 10 distanceArray.append(distanceBetween(p1: p2, p2: p4)) 11 distanceArray.append(distanceBetween(p1: p3, p2: p4)) 12 13 distanceArray.sort() 14 15 if distanceArray[0] > 0 16 , distanceArray[0] == distanceArray[1] 17 , distanceArray[1] == distanceArray[2] 18 , distanceArray[2] == distanceArray[3] 19 , distanceArray[4] == distanceArray[5] { 20 return true 21 } else { 22 return false 23 } 24 } 25 26 private func distanceBetween(p1: [Int], p2: [Int]) -> Int { 27 let deltaX = p2.first! - p1.first! 28 let deltaY = p2.last! - p1.last! 29 return deltaX * deltaX + deltaY * deltaY 30 } 31 }
转载于:https://www.cnblogs.com/strengthen/p/10450189.html
[Swift]LeetCode593. 有效的正方形 | Valid Square相关推荐
- 设计一个程序,求正方形和长方形的周长,具体要求如下: (1) 定义正方形类Square作为基类,包含数据成员边长,以及构造函数、求正方形周长的虚函数、输出函数。 (2) 定义类Square的共有派
设计一个程序,求正方形和长方形的周长,具体要求如下: (1) 定义正方形类Square作为基类,包含数据成员边长,以及构造函数.求正方形周长的虚函数.输出函数. (2) 定义类Square的共有派生类 ...
- [Swift]LeetCode221. 最大正方形 | Maximal Square
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- [Swift]LeetCode473. 火柴拼正方形 | Matchsticks to Square
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- leetcode 593. Valid Square | 593. 有效的正方形(Java)
题目 https://leetcode.com/problems/valid-square/ 题解 因为顺序未知,所以可能有四种组合情况.(check时,以四个点顺时针排列为待判断的正方形) clas ...
- [Swift]快速反向平方根 | Fast inverse square root
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- Swift入门笔记(二)
枚举 使用enum来创建一个枚举 像类和其他所有命名类型一样,枚举可以包含方法 enum Rank: Int { case Ace = 1 case Two, Three, Four, Five, S ...
- 正方形、长方形、立方体
Description 给出正方形(Square).长方形(Rectangle).立方体(Cuboid)的边长,求周长.面积.体积. Square类只需存一条边长,构造函数产生一条输出,有边长.周长. ...
- Java计算圆、长方形、正方形的面积及周长,并比较打印各个图形的大小
代码分两部分来现实: 先求出各个图形的面积和周长: 在比较各个图形的大小: 第一点解答如下: (创建一个图形类Graph:派生类:圆形类Circle.正方形类Square.长方形类Rectangle: ...
- 求正方形的面积和缩放形状
求正方形的面积和缩放形状. (1) 先创建一个接口IShape ,接口中有2个抽象方法: double area( ); // 计算面积 squre zoom(double factor); // z ...
- java利用子类求正方形_Java 作业 重写正方形周长方法
题目 编写一个应用程序,再创建一个矩形类,类中具有长,宽两个成员变量和求周长的方法. 再创建一个矩形类子类, 正方形类,类中定义求面积方法,重写周长方法,在主类中,输入一个正方形的边长,在创建正方形对 ...
最新文章
- java.io.IOException: Stream closed
- python完全新手教程-小白的Python新手教程​
- HTTP协议和几种常见的状态码
- 假如 Go 能说话,听听 GMP 的心声
- 动态规划 —— 背包问题 —— 背包问题模版
- C++函数申明对函数模板实例化的屏蔽
- java使用httpClient解决外部url请求访问
- Phone Bills【PAT 1016题】--- 电话账单结算
- 夏普电视出现android不动了,夏普电视常见故障问题分析与处理,电视机故障判断检修...
- RGMII自适应网络数据的处理方式
- 使用Python套接字编程的视频聊天应用
- AndroBench手机性能测试【转】
- 计算机专业新年对联,大学各学院新春对联
- go语言环境安装之插件
- 取消Vue中格式警告
- 使用Google CDN的JSAPI服务来提供加载各类JS库的方法
- QT5系列教程二---基于qcustomplot的QT5 GUI串口收发绘图软件实现
- Windows查询内存(内存条)信息
- 如何使图片和文字垂直对齐(vertical-align:middle;)
- 基于粒子群算法优化的ELMAN动态递归神经网络预测-附代码