1334. 阈值距离内邻居最少的城市

分析题目两点“阈值距离”、“邻居最少”。
“阈值距离”相当于定了个上界,求节点之间的最短距离。
“邻居最少”相当于能连接的点的数量。
求节点之间的最短距离有以下几种方法:
在这里插入图片描述
在这道题当中,n的范围是100以内,所以可以考虑O(n^3)的复杂度的算法
如果使用朴素Dijkstra算法,遍历所有点的算法复杂度为O(n*n^2)
如果使用堆优化版的Dijkstra算法,m=n^2,还不如朴素Dijkstra算法。
因此可以使用Floyd算法。
大致思路就是:先初始化一个最短距离矩阵d,然后每个节点一次遍历,对d值进行更新。
在这道题中,使用Floyd算法找到每个节点到其他节点的最短路径,然后遍历每个节点,找到在阈值距离内且可连接点数最少的节点。

class Solution {
public:int findTheCity(int n, vector<vector<int>>& edges, int distanceThreshold) {vector<vector<int>> d(n, vector<int>(n, 1e8));	// 这里的边值最大为1e4for (int i = 0; i < n; i++) d[i][i] = 0;for (auto v: edges) {int a = v[0], b = v[1], w = v[2];d[a][b] = d[b][a] = min(d[a][b], w);	// 注意这里对边值的初始化要去最小值}for (int k = 0; k < n; k++) {for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {d[i][j] = min(d[i][j], d[i][k] + d[k][j]);}}}int res = -1, min_cnt = n + 1;	// 初始下标和初始最小连接节点个数for (int i = 0; i < n; i++) {int cnt = 0;for (int j = 0; j < n; j++) {if (i != j && d[i][j] <= distanceThreshold) {cnt++;}}if (cnt <= min_cnt) {min_cnt = cnt;res = i;}}return res;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/176886.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jetson orin部署大模型示例教程

一、LLM介绍 LLM指的是Large Language Model&#xff08;大型语言模型&#xff09;&#xff0c;是一类基于深度学习的自然语言处理技术&#xff0c;其主要目的是让机器能够更好地理解和生成人类的自然语言文本&#xff0c;如文章、对话、搜索等。 教程 - text-generation-web…

Jenkins入门——安装docker版的Jenkins 配置mvn,jdk等 使用案例初步 遇到的问题及解决

前言 Jenkins是开源CI&CD软件领导者&#xff0c; 提供超过1000个插件来支持构建、部署、自动化&#xff0c; 满足任何项目的需要。 官网&#xff1a;https://www.jenkins.io/zh/ 本篇博客介绍docker版的jenkins的安装和使用&#xff0c;maven、jdk&#xff0c;汉语的配置…

都dubbo3了,别再用xml了配置dubbo服务了

这里是weihubeats,觉得文章不错可以关注公众号小奏技术&#xff0c;文章首发。拒绝营销号&#xff0c;拒绝标题党 背景 最近项目再准备升级dubbo3,所以打算简单实现一个dubbo3的demo。 来学习一下dubbo dubbo3 dubbo3主要是为了融入云原生打造的 Dubbo 3 提供的核心特性列…

【C#学习】给FormClosing增加消息响应函数

第一步&#xff1a;增加消息句柄 第二步&#xff1a;编写消息函数 private void Form1_FormClosing(object sender, FormClosingEventArgs e) {//add your code hereserialPort1.Close();}

2023深圳高交会,11月15-19日在深圳会展中心盛大开幕,展出五天时间

跨越山海&#xff0c;共赴鹏城。 11月15日至19日&#xff0c;第二十五届中国国际高新技术成果交易会在深圳会展中心&#xff08;福田展区&#xff09;和深圳国际会展中心&#xff08;宝安展区&#xff09;两馆同时举行。一场不可错过的全球性高科技盛会如期而至。 科技赋能发…

常见限流算法解读

目录 前言 固定窗口&#xff08;计算器法&#xff09; 滑动窗口 漏桶算法 令牌桶算法 总结 前言 在现在的互联网系统中有很多业务场景&#xff0c;比如商品秒杀、下单、数据查询详情&#xff0c;其最大特点就是高并发&#xff0c;但是我们的系统通常不能承受这么大的流…

解决 requests.post 数据字段编码问题的方法

问题背景 在进行网络请求时&#xff0c;我们通常会使用requests库的post方法来发送POST请求。然而&#xff0c;当我们尝试发送包含特殊字符&#xff08;如中文字符&#xff09;的数据时&#xff0c;可能会遇到数据字段被编码的问题。这可能会导致请求失败或者服务器无法正确解…

Ubuntu环境下为串口设置别名

本文介绍Ubuntu环境下为串口设置别名。 Ubuntu环境下&#xff0c;有时候开发调试会使用到USB转串口&#xff0c;本文介绍在不同使用场景下为串口设置别名的方法。主要分为绑定设备ID和绑定USB端口号。 1.绑定设备ID 绑定设备ID适用于USB转串口的设备ID唯一的情况&#xff0c…

基于安卓android微信小程序的快递取件及上门服务系统

项目介绍 本文从管理员、用户的功能要求出发&#xff0c;快递取件及上门服务中的功能模块主要是实现管理员服务端&#xff1b;首页、个人中心、用户管理、快递下单管理、预约管理、管理员管理、系统管理、订单管理&#xff0c;用户客户端&#xff1b;首页、快递下单、预约管理…

台球厅 计时计费系统怎么弄教程,佳易王桌球计时计费系统灯控设置教程

台球厅 计时计费系统怎么弄教程&#xff0c;佳易王桌球计时计费系统灯控设置教程 佳易王桌球计时计费软件灯控器与软件配套&#xff0c;灯控连接设置只需设置端口即可。点击左上角系统参数设置 找到 控制器端口设置&#xff0c;点击打开 选择相应的端口保存即可&#xff0c;这…

java创造对象

java创造对象主要分为以下几个步骤 获取对应的类&#xff0c;查看是否加载&#xff0c;如果没有加载把类进行加载根据类的信息可以直接获取到实例的大小&#xff0c;分配对应内存调用实例的方法 比如说 class bb implements Serializable {private String bb; }class aa ext…