n 輛車沿著一條車道駛向位於 target 英里之外的共同目的地。
每輛車 i 以恆定的速度 speed[i] (英里/小時),從初始位置 position[i] (英里) 沿車道駛向目的地。
一輛車永遠不會超過前面的另一輛車,但它可以追上去,並與前車以相同的速度緊接著行駛。
此時,我們會忽略這兩輛車之間的距離,也就是說,它們被假定處於相同的位置。
車隊 是一些由行駛在相同位置、具有相同速度的車組成的非空集合。注意,一輛車也可以是乙個車隊。
即便一輛車在目的地才趕上了乙個車隊,它們仍然會被視作是同乙個車隊。
會有多少車隊到達目的地?
示例:輸入:target = 12, position = [10,8,0,5,3], speed = [2,4,1,1,3]
輸出:3
解釋:從 10 和 8 開始的車會組成乙個車隊,它們在 12 處相遇。
從 0 處開始的車無法追上其它車,所以它自己就是乙個車隊。
從 5 和 3 開始的車會組成乙個車隊,它們在 6 處相遇。
請注意,在到達目的地之前沒有其它車會遇到這些車隊,所以答案是 3。
0 <= n <= 10 ^ 4
0 < target <= 10 ^ 6
0 < speed[i] <= 10 ^ 6
0 <= position[i] < target
所有車的初始位置各不相同。
思路:
1.用car物件來儲存每一輛車的起始位置和速度
2.根據距離的大小對car排序
3.從第一輛車開始判斷,判斷當前車與前車是否能組成車隊,不能則將車隊數sum加一,否則繼續判斷下一輛車。
4.注意的地方:後車追上後,與前車速度相同,再後面車也可能追上形成乙個車隊,所以用前車覆蓋後車。
我的**用距離來判斷是否追上,官方用每輛車在不受其餘車的影響時,行駛到終點需要的時間來判斷是否追上,更簡單。
**:
class
solution
//1.用car物件來儲存每一輛車的起始位置和速度
car[
] cars =
newcar
[position.length]
;for
(int i =
0; i < position.length; i++
)//2.根據距離的大小對car排序
arrays.
sort
(cars)
;//3.從第最後輛車開始判斷,判斷當前車與前車是否能組成車隊,不能則將車隊數sum加一,否則繼續判斷下一輛車。
int sum =1;
//初始化為1, 預設有一支車隊
for(
int i = position.length -
2; i >=
0; i--)}
return sum;
}private
boolean
issame
(car car1, car car2,
int target)
return
false;}
class
carimplements
comparable
@override
public
intcompareto
(car o)
}}
LeetCode解析 1094 拼車
題目 假設你是一位順風車司機,車上最初有 capacity 個空座位可以用來載客。由於道路的限制,車 只能 向乙個方向行駛 也就是說,不允許掉頭或改變方向,你可以將其想象為乙個向量 這兒有乙份乘客行程計畫表 trips,其中 trips i num passengers,start location...
LeetCode刷題筆記 1094 拼車
假設你是一位順風車司機,車上最初有 capacity 個空座位可以用來載客。由於道路的限制,車 只能 向乙個方向行駛 也就是說,不允許掉頭或改變方向,你可以將其想象為乙個向量 這兒有乙份行程計畫表 trips,其中 trips i num passengers,start location,end ...
LeetCode999 車的可用捕獲量
解析 我想到的是一種比較笨的方法,首先遍歷找出車的位置,然後分別在同列向上,同列向下,同行向左,同行向右遍歷查詢遇到的第乙個非空位置,如果是p則加一,遍歷結束 如果是b,則遍歷結束。最後得出結果。不知道有沒有更好的方法,總感覺自己的方法太笨了,又想不出好的方法。int numrookcaptures...