1. 程式人生 > 遊戲 >還是熟悉的味道 《槍墓G.O.R.E.》公佈實機演示預告片

還是熟悉的味道 《槍墓G.O.R.E.》公佈實機演示預告片

連結

第i個人的體重為people[i],每艘船可以承載的最大重量為limit。

每艘船最多可同時載兩人,但條件是這些人的重量之和最多為limit。

返回載到每一個人所需的最小船數。(保證每個人都能被船載)。

import java.util.Arrays;

class Solution {

    private int search(int[] people, int key) {

        int l = 0, r = people.length - 1, ans = -1;

        while (l <= r) {
            int mid = (l + r) >> 1;
            if (people[mid] <= key) {
                ans = mid;
                l = mid + 1;
            } else {
                r = mid - 1;
            }
        }

        return ans;
    }

    public int numRescueBoats(int[] people, int limit) {

        Arrays.sort(people);

        int mid = search(people, limit >> 1);

        int leftUnused = 0;

        int left = mid, right = mid + 1, ret = 0;

        while (left >= 0 && right < people.length) {
            if (people[left] + people[right] <= limit) {
                ret++;
                left--;
                right++;
            } else {
                leftUnused++;
                left--;
            }
        }

        return ret + (left + leftUnused + 2) / 2 + (people.length - right);
    }
}
心之所向,素履以往 生如逆旅,一葦以航