Java C++题解leetcode1620网络信号最好的坐标

 更新时间:2023年01月16日 14:25:54   作者:AnjaVon  
这篇文章主要为大家介绍了Java C++题解leetcode1620网络信号最好的坐标示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

题目

题目要求

思路:暴力模拟

  • 因为数据范围小,所以是万万没想到的逐个遍历……
  • 遍历每个塔,然后找每个塔辐射的范围,用一个大矩阵记录每个点对应的信号大小,同时维护当前最大的信号及其对应坐标。

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) { // 信号更强
                        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) { // 信号更强
                        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网络信号最好的坐标的详细内容,更多关于Java C++网络信号最好坐标的资料请关注脚本之家其它相关文章!

相关文章

  • 浅谈Servlet的Cookie和Session机制

    浅谈Servlet的Cookie和Session机制

    虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术.本文将详细讨论session以及cookie的工作机制,需要的朋友可以参考下
    2021-05-05
  • 详解maven的install的作用

    详解maven的install的作用

    这篇文章主要介绍了详解maven的install的作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Debian配置JDK1.7 与Linux Java Helloworld

    Debian配置JDK1.7 与Linux Java Helloworld

    这篇文章主要介绍了Debian配置JDK1.7 与Linux Java Helloworld 的相关资料,需要的朋友可以参考下
    2016-06-06
  • Spring中配置Transaction与不配置的区别及说明

    Spring中配置Transaction与不配置的区别及说明

    这篇文章主要介绍了Spring中配置Transaction与不配置的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Mybatis配置之typeAlias标签的用法

    Mybatis配置之typeAlias标签的用法

    这篇文章主要介绍了Mybatis配置之typeAlias标签的用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • java实现对Hadoop的操作

    java实现对Hadoop的操作

    这篇文章主要介绍了java实现对Hadoop的操作,通过非常完整详细的代码展示了如何去进行一系列操作,包括基本操作,文件读写,需要的朋友可以参考下
    2021-07-07
  • 如何解决EasyExcel导出文件LocalDateTime报错问题

    如何解决EasyExcel导出文件LocalDateTime报错问题

    这篇文章主要介绍了如何解决EasyExcel导出文件LocalDateTime报错问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Java使用WatchService监控文件内容变化的示例

    Java使用WatchService监控文件内容变化的示例

    本篇文章主要介绍了Java使用WatchService监控文件变化的示例,非常具有实用价值,需要的朋友可以参考下
    2017-10-10
  • 解决IDEA使用maven创建Web项目,出现500错误的问题

    解决IDEA使用maven创建Web项目,出现500错误的问题

    本文主要介绍了在使用Maven创建项目并导入依赖写完测试代码后运行出现500错误的解决步骤,这种问题的根本原因是Tomcat启动后缺少某些支持的jar包,导致运行出错,解决方法是在项目结构中找到Artifacts,点击要编辑的项目
    2024-10-10
  • java开发中基于JDBC连接数据库实例总结

    java开发中基于JDBC连接数据库实例总结

    这篇文章主要介绍了java开发中基于JDBC连接数据库的方法,以实例形式较为详细的总结分析了Java使用JDBC的具体步骤与注意事项,并附带了一个完整实例加以说明,需要的朋友可以参考下
    2015-11-11

最新评论