593. Valid Square
Der Aufgabentext wird für die gewählte Sprache aus dem Russischen übersetzt. Code bleibt unverändert.
given координаты четырех точек в 2D-пространстве p1, p2, p3 и p4. return true, если эти четыре точки образуют квадрат.
Координата точки pi представлена как [xi, yi]. Ввод не дан в каком-либо определенном порядке.
Корректный квадрат имеет четыре равные стороны с положительной длиной и четыре равных угла (по 90 градусов).
Beispiel:
Input: p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,1]
Output: true
C# Lösung
zugeordnet/originalpublic class Solution {
private int Dist(int[] p1, int[] p2) {
return (p2[1] - p1[1]) * (p2[1] - p1[1]) + (p2[0] - p1[0]) * (p2[0] - p1[0]);
}
private bool Check(int[] p1, int[] p2, int[] p3, int[] p4) {
return Dist(p1, p2) > 0 &&
Dist(p1, p2) == Dist(p2, p3) &&
Dist(p2, p3) == Dist(p3, p4) &&
Dist(p3, p4) == Dist(p4, p1) &&
Dist(p1, p3) == Dist(p2, p4);
}
public bool ValidSquare(int[] p1, int[] p2, int[] p3, int[] p4) {
return Check(p1, p2, p3, p4) ||
Check(p1, p3, p2, p4) ||
Check(p1, p2, p4, p3);
}
}
C++ Lösung
Auto-Entwurf, vor dem Einreichen prüfen#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
private int Dist(vector<int>& p1, vector<int>& p2) {
return (p2[1] - p1[1]) * (p2[1] - p1[1]) + (p2[0] - p1[0]) * (p2[0] - p1[0]);
}
private bool Check(vector<int>& p1, vector<int>& p2, vector<int>& p3, vector<int>& p4) {
return Dist(p1, p2) > 0 &&
Dist(p1, p2) == Dist(p2, p3) &&
Dist(p2, p3) == Dist(p3, p4) &&
Dist(p3, p4) == Dist(p4, p1) &&
Dist(p1, p3) == Dist(p2, p4);
}
public bool ValidSquare(vector<int>& p1, vector<int>& p2, vector<int>& p3, vector<int>& p4) {
return Check(p1, p2, p3, p4) ||
Check(p1, p3, p2, p4) ||
Check(p1, p2, p4, p3);
}
}
Java Lösung
zugeordnet/originalpublic class Solution {
public double dist(int[] p1, int[] p2) {
return (p2[1] - p1[1]) * (p2[1] - p1[1]) + (p2[0] - p1[0]) * (p2[0] - p1[0]);
}
public boolean check(int[] p1, int[] p2, int[] p3, int[] p4) {
return dist(p1,p2) > 0 && dist(p1, p2) == dist(p2, p3) && dist(p2, p3) == dist(p3, p4) && dist(p3, p4) == dist(p4, p1) && dist(p1, p3) == dist(p2, p4);
}
public boolean validSquare(int[] p1, int[] p2, int[] p3, int[] p4) {
return check(p1, p2, p3, p4) || check(p1, p3, p2, p4) || check(p1, p2, p4, p3);
}
}
JavaScript Lösung
zugeordnet/originalvar dist = function(p1, p2) {
return (p2[1] - p1[1]) ** 2 + (p2[0] - p1[0]) ** 2;
};
var check = function(p1, p2, p3, p4) {
return dist(p1, p2) > 0 &&
dist(p1, p2) === dist(p2, p3) &&
dist(p2, p3) === dist(p3, p4) &&
dist(p3, p4) === dist(p4, p1) &&
dist(p1, p3) === dist(p2, p4);
};
var validSquare = function(p1, p2, p3, p4) {
return check(p1, p2, p3, p4) ||
check(p1, p3, p2, p4) ||
check(p1, p2, p4, p3);
};
Python Lösung
zugeordnet/originalclass Solution:
def dist(self, p1, p2):
return (p2[1] - p1[1]) ** 2 + (p2[0] - p1[0]) ** 2
def check(self, p1, p2, p3, p4):
return self.dist(p1, p2) > 0 and \
self.dist(p1, p2) == self.dist(p2, p3) == self.dist(p3, p4) == self.dist(p4, p1) and \
self.dist(p1, p3) == self.dist(p2, p4)
def validSquare(self, p1, p2, p3, p4):
return self.check(p1, p2, p3, p4) or \
self.check(p1, p3, p2, p4) or \
self.check(p1, p2, p4, p3)
Go Lösung
zugeordnet/originalpackage main
import (
"math"
)
func dist(p1, p2 []int) int {
return (p2[1]-p1[1])*(p2[1]-p1[1]) + (p2[0]-p1[0])*(p2[0]-p1[0])
}
func check(p1, p2, p3, p4 []int) bool {
return dist(p1, p2) > 0 &&
dist(p1, p2) == dist(p2, p3) &&
dist(p2, p3) == dist(p3, p4) &&
dist(p3, p4) == dist(p4, p1) &&
dist(p1, p3) == dist(p2, p4)
}
func validSquare(p1, p2, p3, p4 []int) bool {
return check(p1, p2, p3, p4) ||
check(p1, p3, p2, p4) ||
check(p1, p2, p4, p3)
}
Algorithm
Определите функцию для вычисления расстояния между двумя точками.
Проверьте, равны ли все стороны и диагонали для трех уникальных случаев перестановки точек.
return true, если хотя бы одна из проверок проходит.
😎
Stellen zu dieser Aufgabe
aktive Stellen with overlapping task tags are angezeigt.
Es gibt noch keine aktiven Stellen.