第 i
我的的體重爲 people[i]
,每艘船能夠承載的最大重量爲 limit
。java
每艘船最多可同時載兩人,但條件是這些人的重量之和最多爲 limit
。算法
返回載到每個人所需的最小船數。(保證每一個人都能被船載)。spa
示例 1:指針
輸入:people = [1,2], limit = 3 輸出:1 解釋:1 艘船載 (1, 2)
示例 2:code
輸入:people = [3,2,2,1], limit = 3 輸出:3 解釋:3 艘船分別載 (1, 2), (2) 和 (3)
示例 3:blog
輸入:people = [3,5,3,4], limit = 5 輸出:4 解釋:4 艘船分別載 (3), (3), (4), (5)
提示:it
1 <= people.length <= 50000
1 <= people[i] <= limit <= 30000
咱們用到的方法是雙指針貪心算法。io
若是最重的人能夠與最輕的人共用一艘船,那麼就這樣作。不然,最重的人不能與任何人配對,因此他們獲得本身的船。class
class Solution { public int numRescueBoats(int[] people, int limit) { int ans = 0; Arrays.sort(people); int left = 0; int right =people.length-1; while (left<=right) { ans++; if(people[left]+people[right]<=limit) left++; right--; } return ans; } }