您的位置:首页 > 健康 > 养生 > 一般个人网址是什么_吉林省吉林市为什么名字一样_搜索大全引擎地址_网络营销教程

一般个人网址是什么_吉林省吉林市为什么名字一样_搜索大全引擎地址_网络营销教程

2025/2/24 1:44:44 来源:https://blog.csdn.net/sinat_41679123/article/details/144075479  浏览:    关键词:一般个人网址是什么_吉林省吉林市为什么名字一样_搜索大全引擎地址_网络营销教程
一般个人网址是什么_吉林省吉林市为什么名字一样_搜索大全引擎地址_网络营销教程

Description

You are given an integer n and a 2D integer array queries.

There are n cities numbered from 0 to n - 1. Initially, there is a unidirectional road from city i to city i + 1 for all 0 <= i < n - 1.

queries[i] = [ui, vi] represents the addition of a new unidirectional road from city ui to city vi. After each query, you need to find the length of the shortest path from city 0 to city n - 1.

Return an array answer where for each i in the range [0, queries.length - 1], answer[i] is the length of the shortest path from city 0 to city n - 1 after processing the first i + 1 queries.

Example 1:

Input: n = 5, queries = [[2,4],[0,2],[0,4]]Output: [3,2,1]Explanation:

在这里插入图片描述

After the addition of the road from 2 to 4, the length of the shortest path from 0 to 4 is 3.

在这里插入图片描述

After the addition of the road from 0 to 2, the length of the shortest path from 0 to 4 is 2.

在这里插入图片描述

After the addition of the road from 0 to 4, the length of the shortest path from 0 to 4 is 1.

Example 2:

Input: n = 4, queries = [[0,3],[0,2]]Output: [1,1]Explanation:

在这里插入图片描述

After the addition of the road from 0 to 3, the length of the shortest path from 0 to 3 is 1.

在这里插入图片描述

After the addition of the road from 0 to 2, the length of the shortest path remains 1.

Constraints:

3 <= n <= 500
1 <= queries.length <= 500
queries[i].length == 2
0 <= queries[i][0] < queries[i][1] < n
1 < queries[i][1] - queries[i][0]
There are no repeated roads among the queries.

Solution

Intuitive

Use a list to store the original path, and a hash map to store the node’s neighbors. When there’s a new path/query, change the node distance and all the distances after that node.

Time complexity: o ( n ∗ n ) o(n*n) o(nn)
Space complexity: o ( n ) o(n) o(n)

Code

Intuitive

class Solution:def shortestDistanceAfterQueries(self, n: int, queries: List[List[int]]) -> List[int]:distance = list(range(n))neighbor = {i + 1: [i] for i in range(n)}res = []for each_query in queries:each_query.sort()start_city, end_city = each_queryneighbor[end_city].append(start_city)distance[end_city] = min(distance[neighbor_city] + 1 for neighbor_city in neighbor[end_city])# update all the cities at the rightprev_city = end_cityfor right_city in range(end_city + 1, n):distance[right_city] = min(distance[neighbor_city] + 1 for neighbor_city in neighbor[right_city])prev_city += 1res.append(distance[-1])return res

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com