Java C++題解leetcode1620網(wǎng)絡(luò)信號(hào)最好的坐標(biāo)
題目



思路:暴力模擬
- 因?yàn)閿?shù)據(jù)范圍小,所以是萬(wàn)萬(wàn)沒(méi)想到的逐個(gè)遍歷……
- 遍歷每個(gè)塔,然后找每個(gè)塔輻射的范圍,用一個(gè)大矩陣記錄每個(gè)點(diǎn)對(duì)應(yīng)的信號(hào)大小,同時(shí)維護(hù)當(dāng)前最大的信號(hào)及其對(duì)應(yīng)坐標(biāo)。
Java
class Solution {
public int[] bestCoordinate(int[][] towers, int radius) {
int[][] grid = new int[110][110];
int cx = 0, cy = 0, qua = 0;
for (int[] t : towers) {
int x = t[0], y = t[1], q = t[2];
for (int i = Math.max(0, x - radius); i <= x + radius; i++) { // 從左到右
for (int j = Math.max(0, y - radius); j <= y + radius; j++) { // 從上到下
double d = Math.sqrt((x - i) * (x - i) + (y - j) * (y - j)); // 歐幾里得距離
if (d > radius) // 距離超半徑
continue;
grid[i][j] += Math.floor(q / (1 + d));
if (grid[i][j] > qua) { // 信號(hào)更強(qiáng)
cx = i;
cy = j;
qua = grid[i][j];
}
else if (grid[i][j] == qua && (i < cx || (i == cx && j < cy))) { // 字典序更小
cx = i;
cy = j;
}
}
}
}
return new int[] {cx, cy};
}
}

C++
- 要初始化??!這可是C++!
class Solution {
public:
vector<int> bestCoordinate(vector<vector<int>>& towers, int radius) {
int grid[110][110] = {0};
int cx = 0, cy = 0, qua = 0;
for (auto t : towers) {
int x = t[0], y = t[1], q = t[2];
for (int i = max(0, x - radius); i <= x + radius; i++) { // 從左到右
for (int j = max(0, y - radius); j <= y + radius; j++) { // 從上到下
double d = sqrt((x - i) * (x - i) + (y - j) * (y - j)); // 歐幾里得距離
if (d > radius) // 距離超半徑
continue;
grid[i][j] += floor(q / (1 + d));
if (grid[i][j] > qua) { // 信號(hào)更強(qiáng)
cx = i;
cy = j;
qua = grid[i][j];
}
else if (grid[i][j] == qua && (i < cx || (i == cx && j < cy))) { // 字典序更小
cx = i;
cy = j;
}
}
}
}
return {cx, cy};
}
};

Rust
impl Solution {
pub fn best_coordinate(towers: Vec<Vec<i32>>, radius: i32) -> Vec<i32> {
let (mut res, mut qua) = (vec![0; 2], 0);
for i in 0..=50 {
for j in 0..=50 {
let mut q = 0;
for t in towers.iter() {
let d = ((t[0] - i as i32) as f64).hypot((t[1] - j as i32) as f64);
if d <= radius as f64 { q += ((t[2] as f64) / (1 as f64 + d)).floor() as i32; }
}
if q > qua || (q == qua && (i < res[0] || i == res[0] && j < res[1])) {
qua = q;
res = vec![i, j];
}
}
}
res
}
}

以上就是Java C++題解leetcode1620網(wǎng)絡(luò)信號(hào)最好的坐標(biāo)的詳細(xì)內(nèi)容,更多關(guān)于Java C++網(wǎng)絡(luò)信號(hào)最好坐標(biāo)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
淺談Servlet的Cookie和Session機(jī)制
雖然session機(jī)制在web應(yīng)用程序中被采用已經(jīng)很長(zhǎng)時(shí)間了,但是仍然有很多人不清楚session機(jī)制的本質(zhì),以至不能正確的應(yīng)用這一技術(shù).本文將詳細(xì)討論session以及cookie的工作機(jī)制,需要的朋友可以參考下2021-05-05
Debian配置JDK1.7 與Linux Java Helloworld
這篇文章主要介紹了Debian配置JDK1.7 與Linux Java Helloworld 的相關(guān)資料,需要的朋友可以參考下2016-06-06
Spring中配置Transaction與不配置的區(qū)別及說(shuō)明
這篇文章主要介紹了Spring中配置Transaction與不配置的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
Mybatis配置之typeAlias標(biāo)簽的用法
這篇文章主要介紹了Mybatis配置之typeAlias標(biāo)簽的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
java實(shí)現(xiàn)對(duì)Hadoop的操作
這篇文章主要介紹了java實(shí)現(xiàn)對(duì)Hadoop的操作,通過(guò)非常完整詳細(xì)的代碼展示了如何去進(jìn)行一系列操作,包括基本操作,文件讀寫(xiě),需要的朋友可以參考下2021-07-07
如何解決EasyExcel導(dǎo)出文件LocalDateTime報(bào)錯(cuò)問(wèn)題
這篇文章主要介紹了如何解決EasyExcel導(dǎo)出文件LocalDateTime報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
Java使用WatchService監(jiān)控文件內(nèi)容變化的示例
本篇文章主要介紹了Java使用WatchService監(jiān)控文件變化的示例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-10-10
解決IDEA使用maven創(chuàng)建Web項(xiàng)目,出現(xiàn)500錯(cuò)誤的問(wèn)題
本文主要介紹了在使用Maven創(chuàng)建項(xiàng)目并導(dǎo)入依賴(lài)寫(xiě)完測(cè)試代碼后運(yùn)行出現(xiàn)500錯(cuò)誤的解決步驟,這種問(wèn)題的根本原因是Tomcat啟動(dòng)后缺少某些支持的jar包,導(dǎo)致運(yùn)行出錯(cuò),解決方法是在項(xiàng)目結(jié)構(gòu)中找到Artifacts,點(diǎn)擊要編輯的項(xiàng)目2024-10-10
java開(kāi)發(fā)中基于JDBC連接數(shù)據(jù)庫(kù)實(shí)例總結(jié)
這篇文章主要介紹了java開(kāi)發(fā)中基于JDBC連接數(shù)據(jù)庫(kù)的方法,以實(shí)例形式較為詳細(xì)的總結(jié)分析了Java使用JDBC的具體步驟與注意事項(xiàng),并附帶了一個(gè)完整實(shí)例加以說(shuō)明,需要的朋友可以參考下2015-11-11

