還是熟悉的味道 《槍墓G.O.R.E.》公佈實機演示預告片
阿新 • • 發佈:2021-10-01
第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); } }