Python|坐標最短路徑計算
- 2020 年 2 月 21 日
- 筆記
問題描述
平面上有 n 個點,點的位置用整數坐標表示 points[i] = [xi, yi]。請你計算訪問所有這些點需要的最小時間(以秒為單位)。你可以按照下面的規則在平面上移動:
每一秒沿水平或者豎直方向移動一個單位長度,或者跨過對角線(可以看作在一秒內向水平和豎直方向各移動一個單位長度)。必須按照數組中出現的順序來訪問這些點。
示例 1:
輸入:points = [[1,1],[3,4],[-1,0]]
輸出:7
解決方案
首先我們需要知道在坐標軸上進行移動的話,一點到對角線路徑為二,且橫縱坐標分別減少或者增加1。
然後然後我們將橫縱坐標分別取開進行計算,然後選購其中大的那個為我們需要進行下一步處理的數據,存放在一個列表中。因為存在該列表中的數據都是單步需要的距離,最後我們就將存在列表中的數據求和,就得到第一個到最後一個坐標的距離,從而得到結果。
Python程式碼
class Solution: def minTimeToVisitAllPoints(points): list = [] z = len(points) num = 0 for i in range(z-1): x = abs(points[i][0]-points[i+1][0]) y = abs(points[i][1]-points[i+1][1]) if x>=y: list.append(x) else: list.append(y) for n in list: num = num+n return num print(minTimeToVisitAllPoints([[1,1],[3,4],[-1,0]])) |
---|
結語
在影像表格題中,我們要善於去畫圖解決問題,在影像中找到其中的規律,這樣才會讓我們看到題目時思路清晰。
END
實習編輯 | 王楠嵐
責 編 | 李和龍