题目:原题链接(中等)
标签:数学
| 解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
|---|---|---|---|
| Ans 1 (Python) | O ( N ) O(N) O(N) | O ( N ) O(N) O(N) | 216ms (8.33%) |
| Ans 2 (Python) | |||
| Ans 3 (Python) |
解法一:
class Solution:
def minDistance(self, height: int, width: int, tree: List[int], squirrel: List[int], nuts: List[List[int]]) -> int:
d1 = [] # 松果到树的往返的距离
d2 = [] # 松果到松鼠+松果到树的距离的距离
for i1, i2 in nuts:
if 0 <= i1 < height and 0 <= i2 < width:
d1.append((abs(i1 - tree[0]) + abs(i2 - tree[1])) * 2)
d2.append(abs(i1 - tree[0]) + abs(i2 - tree[1]) + abs(i1 - squirrel[0]) + abs(i2 - squirrel[1]))
ans = 0
more = float("inf") # 第一个捡的松果的距离变化量
for i in range(len(d1)):
ans += d1[i]
more = min(more, d2[i] - d1[i])
return ans + more
使用Python解决数学问题:最小距离算法
这篇博客介绍了一个中等难度的数学问题,涉及计算松鼠从树到各个松果之间的最短距离。解法中展示了三种不同的Python实现,时间复杂度和空间复杂度均为O(N),并给出了具体的执行用时。主要关注点在于距离计算和优化算法设计。
338

被折叠的 条评论
为什么被折叠?



