LeetCode 853 車隊 排序

2021-10-01 07:03:54 字數 1692 閱讀 2056

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...