Leetcode--881. 救生艇
第?i?個人的體重為?people[i],每艘船可以承載的最大重量為?limit。
每艘船最多可同時載兩人,但條件是這些人的重量之和最多為?limit。
返回載到每一個人所需的最小船數。(保證每個人都能被船載)。
?
示例 1:
輸入:people = [1,2], limit = 3
輸出:1
解釋:1 艘船載 (1, 2)
示例 2:
輸入:people = [3,2,2,1], limit = 3
輸出:3
解釋:3 艘船分別載 (1, 2), (2) 和 (3)
示例 3:
輸入:people = [3,5,3,4], limit = 5
輸出:4
解釋:4 艘船分別載 (3), (3), (4), (5)
提示:
1 <=?people.length <= 50000
1 <= people[i] <=?limit <= 30000
思路:先排個序
然后最大的找最小的,如果小于等于limit,就把兩個都裝進去,要不然就裝一個最大的
提交的代碼:
class Solution {
? ? public int numRescueBoats(int[] people, int limit) {
? ? ? ? ?Arrays.sort(people);
? ? ? ? int sum=0,i=people.length-1,j=0;
? ? ? ? while(i>=j)
? ? ? ? {
? ? ? ? ?? ?if(people[i]+people[j]<=limit)
? ? ? ? ?? ?{
? ? ? ? ?? ??? ?j++;
? ? ? ? ?? ?}
? ? ? ? ?? ?i--;
? ? ? ? ?? ?sum++;
? ? ? ? }
? ? ? ? return sum;
? ? }
}
完整的代碼:
import java.util.Arrays;
public class Solution881 {
public static int numRescueBoats(int[] people, int limit) {
? ? ? ? Arrays.sort(people);
? ? ? ? int sum=0,i=people.length-1,j=0;
? ? ? ? while(i>=j)
? ? ? ? {
? ? ? ? ?? ?if(people[i]+people[j]<=limit)
? ? ? ? ?? ?{
? ? ? ? ?? ??? ?j++;
? ? ? ? ?? ?}
? ? ? ? ?? ?i--;
? ? ? ? ?? ?sum++;
? ? ? ? }
? ? ? ? return sum;
? ? }
public static void main(String[] args)
{
?? ?int[] people = {2,49,10,7,11,41,47,2,22,6,13,12,33,18,10,26,2,6,50,10};
?? ?int x = 50;
?? ?System.out.println(numRescueBoats(people,x));
}
}
?
總結
以上是生活随笔為你收集整理的Leetcode--881. 救生艇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java--自动装箱,拆箱
- 下一篇: Leetcode--1371. 每个元音