★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(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:

  1. All the input integers are in the range [-10000, 10000].
  2. A valid square has four equal sides with positive length and four equal angles (90-degree angles).
  3. Input points have no order.

给定二维空间中四点的坐标,返回四点是否可以构造一个正方形。

一个点的坐标(x,y)由一个有两个整数的整数数组表示。

示例:

输入: p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,1]
输出: True 

注意:

  1. 所有输入整数都在 [-10000,10000] 范围内。
  2. 一个有效的正方形有四个等长的正长和四个等角(90度角)。
  3. 输入点没有顺序。

Runtime: 8 ms
Memory Usage: 19.2 MB
 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. 设计一个程序,求正方形和长方形的周长,具体要求如下: (1) 定义正方形类Square作为基类,包含数据成员边长,以及构造函数、求正方形周长的虚函数、输出函数。 (2) 定义类Square的共有派

    设计一个程序,求正方形和长方形的周长,具体要求如下: (1) 定义正方形类Square作为基类,包含数据成员边长,以及构造函数.求正方形周长的虚函数.输出函数. (2) 定义类Square的共有派生类 ...

  2. [Swift]LeetCode221. 最大正方形 | Maximal Square

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  3. [Swift]LeetCode473. 火柴拼正方形 | Matchsticks to Square

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  4. leetcode 593. Valid Square | 593. 有效的正方形(Java)

    题目 https://leetcode.com/problems/valid-square/ 题解 因为顺序未知,所以可能有四种组合情况.(check时,以四个点顺时针排列为待判断的正方形) clas ...

  5. [Swift]快速反向平方根 | Fast inverse square root

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  6. Swift入门笔记(二)

    枚举 使用enum来创建一个枚举 像类和其他所有命名类型一样,枚举可以包含方法 enum Rank: Int { case Ace = 1 case Two, Three, Four, Five, S ...

  7. 正方形、长方形、立方体

    Description 给出正方形(Square).长方形(Rectangle).立方体(Cuboid)的边长,求周长.面积.体积. Square类只需存一条边长,构造函数产生一条输出,有边长.周长. ...

  8. Java计算圆、长方形、正方形的面积及周长,并比较打印各个图形的大小

    代码分两部分来现实: 先求出各个图形的面积和周长: 在比较各个图形的大小: 第一点解答如下: (创建一个图形类Graph:派生类:圆形类Circle.正方形类Square.长方形类Rectangle: ...

  9. 求正方形的面积和缩放形状

    求正方形的面积和缩放形状. (1) 先创建一个接口IShape ,接口中有2个抽象方法: double area( ); // 计算面积 squre zoom(double factor); // z ...

  10. java利用子类求正方形_Java 作业 重写正方形周长方法

    题目 编写一个应用程序,再创建一个矩形类,类中具有长,宽两个成员变量和求周长的方法. 再创建一个矩形类子类, 正方形类,类中定义求面积方法,重写周长方法,在主类中,输入一个正方形的边长,在创建正方形对 ...

最新文章

  1. java.io.IOException: Stream closed
  2. python完全新手教程-小白的Python新手教程​
  3. HTTP协议和几种常见的状态码
  4. 假如 Go 能说话,听听 GMP 的心声
  5. 动态规划 —— 背包问题 —— 背包问题模版
  6. C++函数申明对函数模板实例化的屏蔽
  7. java使用httpClient解决外部url请求访问
  8. Phone Bills【PAT 1016题】--- 电话账单结算
  9. 夏普电视出现android不动了,夏普电视常见故障问题分析与处理,电视机故障判断检修...
  10. RGMII自适应网络数据的处理方式
  11. 使用Python套接字编程的视频聊天应用
  12. AndroBench手机性能测试【转】
  13. 计算机专业新年对联,大学各学院新春对联
  14. go语言环境安装之插件
  15. 取消Vue中格式警告
  16. 使用Google CDN的JSAPI服务来提供加载各类JS库的方法
  17. QT5系列教程二---基于qcustomplot的QT5 GUI串口收发绘图软件实现
  18. Windows查询内存(内存条)信息
  19. 如何使图片和文字垂直对齐(vertical-align:middle;)
  20. 基于粒子群算法优化的ELMAN动态递归神经网络预测-附代码

热门文章

  1. 你用过Mybatis的动态SQL后,就知道写SQL有多爽了!
  2. 如何优雅地根治null值引起的Bug?!
  3. 甲骨文裁员后续:近万招聘者哄抢甲骨文前员工
  4. 算法真的“难”吗?其实也不见得...
  5. 【习惯】是学习最好的坚持方式
  6. 提高服务器响应时间,如何提高服务器qps
  7. shell初学之nginx(域名)
  8. P1081 开车旅行
  9. 个股打板机会:国民技术(实战)
  10. 8.29 脏检查笔记