力扣-图论-9【算法学习day.59】

news/2024/12/16 0:42:53/

前言

###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

1.新增道路查询后的最短距离I

题目链接:3243. 新增道路查询后的最短距离 I - 力扣(LeetCode)

题面:

分析:bfs

贴上大佬代码: 

java">class Solution {public int[] shortestDistanceAfterQueries(int n, int[][] queries) {List<Integer>[] g = new ArrayList[n - 1]; // 邻接表Arrays.setAll(g, i -> new ArrayList<>()); // 初始化邻接表for (int i = 0; i < n - 1; i++) { // 构建初始图g[i].add(i + 1);}int[] ans = new int[queries.length]; // 结果数组int[] vis = new int[n - 1]; // 访问标记数组for (int i = 0; i < queries.length; i++) { // 处理每个查询g[queries[i][0]].add(queries[i][1]); // 添加边ans[i] = bfs(i + 1, g, vis, n); // 计算最短距离}return ans; // 返回结果}private int bfs(int i, List<Integer>[] g, int[] vis, int n) {Queue<Integer> q = new LinkedList<>(); // 队列q.offer(0); // 起点int step = 1; // 步数while (!q.isEmpty()) { // BFSint size = q.size();for (int j = 0; j < size; j++) {int x = q.poll();for (int y : g[x]) {if (y == n - 1) { // 到达终点return step;}if (vis[y] != i) { // 未访问vis[y] = i;q.offer(y);}}}step++;}return -1; // 无法到达}
}

2.获取你好友已观看的视频

题目链接:1311. 获取你好友已观看的视频 - 力扣(LeetCode)

大佬代码:

java">class Solution {public List<String> watchedVideosByFriends(List<List<String>> watchedVideos, int[][] friends, int id, int level) {//bfs找到level好友Deque<Integer> q = new ArrayDeque<>();q.addLast(id);int size = q.size();//用于记录防止重复Set<Integer> set = new HashSet<>();set.add(id);while(level>0){int i = q.pollFirst();for(int a : friends[i]){if(!set.contains(a)){set.add(a);q.addLast(a);}}size--;if(size == 0){level--;size = q.size();}}//哈希表-记录level朋友观看的视频Map<String,Integer> map = new HashMap<>();while(!q.isEmpty()){int i = q.pollFirst();for(String s : watchedVideos.get(i)){if(map.containsKey(s))map.put(s,map.get(s)+1);else map.put(s,1);}}List<String> list = new ArrayList<>(map.keySet());//排序list.sort((a,b)->{if(map.get(a) == map.get(b)){int i = 0;while(true){if(a.charAt(i) != b.charAt(i))return a.charAt(i) - b.charAt(i);else{i++;if(i>=Math.min(a.length(),b.length())){return a.length() - b.length();}}}}return map.get(a) - map.get(b);});return list;}
}

后言

上面是力扣图论专题,下一篇是其他的习题,希望有所帮助,一同进步,共勉!


http://www.ppmy.cn/news/1555449.html

相关文章

STM32 出租车计价器系统设计(一) 江科大源码改写

STM32 出租车计价器系统设计 功能目标 驱动步进电机模拟车轮旋转&#xff0c;并实现调速功能。 设置车轮周长和单价&#xff0c;检测车轮转速和运转时间。 计算并显示行驶里程和价格。 硬件材料 28BYJ48 五线四相步进电机和 ULN2003 驱动板模块 测速传感器模块 嵌入式小系统…

快速上手Neo4j图关系数据库

参考视频&#xff1a; 【IT老齐589】快速上手Neo4j网状关系图库 1 Neo4j简介 Neo4j是一个图数据库&#xff0c;是知识图谱的基础 在Neo4j中&#xff0c;数据的基本构建块包括&#xff1a; 节点(Nodes)关系(Relationships)属性(Properties)标签(Labels) 1.1 节点(Nodes) 节点…

分布式全文检索引擎ElasticSearch-基本概念介绍

一、索引类型 索引&#xff0c;可以理解是我们的目录&#xff0c;看一本书的时候&#xff0c;可以根据目录准确快速定位到某一页&#xff0c;那么索引就可以帮我们快速定位到某条数据在庞大的数据表的哪一个位置。 我们常见的索引包括正排索引和倒排索引 1、正排索引 正排索…

算法训练(leetcode)二刷第三十五天 | *121. 买卖股票的最佳时机、*122. 买卖股票的最佳时机 II、*123. 买卖股票的最佳时机 III

刷题记录 *121. 买卖股票的最佳时机贪心*动态规划 *122. 买卖股票的最佳时机 II*123. 买卖股票的最佳时机 III *121. 买卖股票的最佳时机 leetcode题目地址 贪心 记录最低价格作为买入价格&#xff0c;并用当前价格减去最低价格获得利润。 时间复杂度&#xff1a; O ( n )…

二、pxe安装失败,交换机tcpdump dhcp数据包

在交换机上使用 tcpdump 抓取 DHCP 数据包可以帮助你监控和分析 DHCP 流量,这对于故障排除网络配置问题或了解 DHCP 服务器与客户端之间的交互非常有用。不过需要注意的是,并不是所有的交换机都支持直接运行 tcpdump,这通常是在 Linux 或类 Unix 系统上使用的命令行工具。对…

oracle 架构详解

Oracle 数据库是一个复杂且强大的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;广泛应用于企业级应用中。了解 Oracle 的架构对于数据库管理员&#xff08;DBA&#xff09;、开发人员和架构师来说至关重要。以下是 Oracle 数据库架构的详细解析&#xff0c;涵…

前端有没有必要转岗?

前端开发是否有必要转岗&#xff0c;取决于多个因素&#xff0c;包括行业发展趋势、个人职业规划、技能需求变化等。‌ 前端开发的现状和挑战 前端开发在过去几年中经历了显著的变化。随着各大高校计算机专业的扩招和互联网发展的放缓&#xff0c;前端开发岗位的竞争变得更加…

Ubuntu安装Python3.12安装PJSUA2

Ubuntu安装Python3.12安装PJSUA2 系统版本&#xff1a;Ubuntu 22.04.3 LTS sudo apt install build-essential python3-dev python3-setuptools \libasound2-dev libpulse-dev libssl-dev libogg-dev libv4l-dev \libx11-dev libxv-dev libncurses5-dev libxml2-dev libsqlite…