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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

447. 回旋镖的数量

發(fā)布時(shí)間:2023/11/29 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 447. 回旋镖的数量 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

447. 回旋鏢的數(shù)量

給定平面上 n 對(duì) 互不相同 的點(diǎn) points ,其中 points[i] = [xi, yi] ?;匦S 是由點(diǎn) (i, j, k) 表示的元組 ,其中 i 和 j 之間的距離和 i 和 k 之間的距離相等(需要考慮元組的順序)。

返回平面上所有回旋鏢的數(shù)量。

示例 1:輸入:points = [[0,0],[1,0],[2,0]] 輸出:2 解釋:兩個(gè)回旋鏢為 [[1,0],[0,0],[2,0]] 和 [[1,0],[2,0],[0,0]] 示例 2:輸入:points = [[1,1],[2,2],[3,3]] 輸出:2 示例 3:輸入:points = [[1,1]] 輸出:0

解題思路

枚舉+哈希表

對(duì)于每個(gè)點(diǎn),我們計(jì)算出它與其他點(diǎn)的距離。對(duì)于到該點(diǎn)距離相同的點(diǎn),我們加入到該距離對(duì)應(yīng)的list中,該list中的任意兩個(gè)點(diǎn)都可以與該點(diǎn)形成回旋鏢,通過(guò)排列組合,我們可以計(jì)算出可以形成的回旋鏢的個(gè)數(shù)

代碼

class Solution {public int numberOfBoomerangs(int[][] points) {int n=points.length;Map<Integer,List<Integer>>[] map=new HashMap[n];for(int i=0;i<n;i++)map[i]=new HashMap<>();for(int i=0;i<n;i++)for(int j=i+1;j<n;j++){int x1=points[i][0],y1=points[i][1],x2=points[j][0],y2=points[j][1];int d=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);if(!map[i].containsKey(d))map[i].put(d,new ArrayList<>());if(!map[j].containsKey(d))map[j].put(d,new ArrayList<>());map[i].get(d).add(j);map[j].get(d).add(i);}int res=0;for(int i=0;i<n;i++){for(List l:map[i].values()){if(l.size()>=2)res+=l.size()*(l.size()-1);}}return res;} }

總結(jié)

以上是生活随笔為你收集整理的447. 回旋镖的数量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。