python培訓(xùn)教程坐標(biāo)最短路徑計(jì)算
同學(xué)們,今天我們一起來了解一下Python培訓(xùn)教程-坐標(biāo)最短路徑計(jì)算的內(nèi)容!
平面上有 n 個(gè)點(diǎn),點(diǎn)的位置用整數(shù)坐標(biāo)表示 points[i] = [xi, yi]。請(qǐng)你計(jì)算訪問所有這些點(diǎn)需要的最小時(shí)間(以秒為單位)。你可以按照下面的規(guī)則在平面上移動(dòng):
每一秒沿水平或者豎直方向移動(dòng)一個(gè)單位長度,或者跨過對(duì)角線(可以看作在一秒內(nèi)向水平和豎直方向各移動(dòng)一個(gè)單位長度)。必須按照數(shù)組中出現(xiàn)的順序來訪問這些點(diǎn)。
示例 1:
輸入:points = [[1,1],[3,4],[-1,0]]
輸出:7
解決方案
首先我們需要知道在坐標(biāo)軸上進(jìn)行移動(dòng)的話,一點(diǎn)到對(duì)角線路徑為二,且橫縱坐標(biāo)分別減少或者增加1。
然后然后我們將橫縱坐標(biāo)分別取開進(jìn)行計(jì)算,然后選購其中大的那個(gè)為我們需要進(jìn)行下一步處理的數(shù)據(jù),存放在一個(gè)列表中。因?yàn)榇嬖谠摿斜碇械臄?shù)據(jù)都是單步需要的距離,最后我們就將存在列表中的數(shù)據(jù)求和,就得到第一個(gè)到最后一個(gè)坐標(biāo)的距離,從而得到結(jié)果。
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]]))
結(jié)語
在圖像表格題中,我們要善于去畫圖解決問題,在圖像中找到其中的規(guī)律,這樣才會(huì)讓我們看到題目時(shí)思路清晰。
好啦!今天的分享到這里就結(jié)束了,文章內(nèi)容轉(zhuǎn)載于技術(shù)網(wǎng)站歐!希望大家可以持續(xù)關(guān)注馬哥教育官網(wǎng),每天都會(huì)有大量優(yōu)質(zhì)內(nèi)容與大家分享!
聲明:文章來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系刪除!