日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【数学】有效的正方形 勾股定理

發布時間:2023/12/14 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数学】有效的正方形 勾股定理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

在一個二維空間中,給定四個點分別用p1、p2、p3、p4表示,如果這四個點能構成一個正方形則返回true,否則返回false。

示例1:

輸入:p1=[0,0], p2=[1,1], p3=[1,0], p4=[0,1]

輸出:true

解題思路

這道題考察的是如何在二維空間計算邊長和判斷是否是直角;

下面是解題思路:

  • 一個正方形有2條相等的對角線和4條相等的邊
  • 判斷是否是直角可以使用勾股定理:C*C=A*A+B*B;在正方形中A和B相等是正方形的邊,而C則是對角線。
  • 計算2個點的長度,? ?長度 * 長度= (y2-y1) *?(y2-y1) +?(x2-x1) *?(x2-x1)?
  • 結合上述信息就可以做計算。
  • 代碼實現

    class Solution {public boolean validSquare(int[] p1, int[] p2, int[] p3, int[] p4) {// 有2個相等 和 4個相等Pair pair1 = new Pair(calculate(p1, p2), 1);Pair pair2 = new Pair(-1, 0);try {int p2p3 = calculate(p2, p3);extracted(pair1, pair2, p2p3);int p3p4 = calculate(p3, p4);extracted(pair1, pair2, p3p4);int p4p1 = calculate(p4, p1);extracted(pair1, pair2, p4p1);int p1p3 = calculate(p1, p3);extracted(pair1, pair2, p1p3);int p2p4 = calculate(p2, p4);extracted(pair1, pair2, p2p4);if (pair1.count == 2) {return pair1.value == 2 * pair2.value;} else if (pair1.count == 4) {return 2 * pair1.value == pair2.value;} else {return false;}} catch (Throwable e) {return false;}}private void extracted(Pair pair1, Pair pair2, int p2p3) {if (pair1.value == p2p3) {pair1.count++;} else if (pair2.value == -1 || pair2.value == p2p3) {pair2.value = p2p3;pair2.count++;} else {throw new RuntimeException();}}int calculate(int[] p1, int[] p2) {int vx = (p2[0] - p1[0]);int vy = (p2[1] - p1[1]);return vx * vx + vy * vy;}class Pair {int value = -1;int count;public Pair(int value, int count) {this.value = value;this.count = count;}}public static void main(String[] args) {Solution solution = new Solution();//[0,0]//[1,1]//[1,0]//[0,1]System.out.println(solution.validSquare(new int[]{0, 0}, new int[]{1, 0}, new int[]{1, 1}, new int[]{0, 1}));System.out.println(solution.validSquare(new int[]{0, 0}, new int[]{1, 1}, new int[]{1, 0}, new int[]{0, 1}));//[1,0]//[-1,0]//[0,1]//[0,-1]System.out.println(solution.validSquare(new int[]{1, 0}, new int[]{-1, 0}, new int[]{0, 1}, new int[]{0, -1}));//[2,2]//[2,1]//[1,2]//[1,2]System.out.println(solution.validSquare(new int[]{2, 2}, new int[]{2, 1}, new int[]{1, 2}, new int[]{1, 2}));} }

    總結

    這道題就是一個數學問題的考察,核心是想清楚如何計算邊長,如果判斷是否是直角;最終從4個點中,求出6條線段,根據6條線段找出4條邊和2條對角線,最終來判斷是否是一個正方形。

    總結

    以上是生活随笔為你收集整理的【数学】有效的正方形 勾股定理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。