i428 - 1. 巴士站牌
題目描述
題目要求計算經過一系列巴士站時,相鄰兩站之間行進時間的最大值和最小值,其中行進時間定義為曼哈頓距離。
解題思路
題目要求計算相鄰站點間曼哈頓距離的最大值和最小值。程式碼透過迴圈迭代讀取每個巴士站的座標,並計算與前一個站點的曼哈頓距離。在迭代過程中,更新最大值和最小值。初始時,最小值設定為一個很大的數,以確保第一個計算出的距離能正確更新最小值。
複雜度分析
- 時間複雜度: O(n)
- 空間複雜度: O(1)
程式碼
#include <iostream>
using namespace std;
int x,y,ma,mi=1e9,n,lx,ly;
int main(){
cin >> n;
for(int i=0;i<n;++i){
cin >> x >> y;
if(i){
ma=max(ma,abs(x-lx)+abs(y-ly));
mi=min(mi,abs(x-lx)+abs(y-ly));
}
lx=x;
ly=y;
}
cout << ma << " " << mi;
}