博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
救生艇
阅读量:4187 次
发布时间:2019-05-26

本文共 755 字,大约阅读时间需要 2 分钟。

第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit

每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit

返回载到每一个人所需的最小船数。(保证每个人都能被船载)。

示例 1:

输入:people = [3,2,2,1], limit = 3输出:3解释:3 艘船分别载 (1, 2), (2) 和 (3)

解题思路:先按照人的体重进行排序,再利用二分法,分别取首尾两个体重,求和与liimit比较,并计算小船数。 

                 贪婪策略:选择重量和最接近limit的两个人

public int numRescueBoats(int[] people, int limit)	{		int weightSum = 0; // 体重之和		int numOfShip = 0; // 轮船数				// 按照人的体重排序		Arrays.sort(people);				int i = 0, j = people.length-1;				// 该成员体重达到limit		while (j >= 0 && people[j] == limit)		{			j--;			numOfShip++;		}				if (j < 0)		{			return numOfShip;		}				// 二分法变形		while (i <= j)		{			if (people[i] + people[j] <= limit)			{				numOfShip++;				i++;				j--;			}			else // 说明people[j]只能独坐一艘船			{				numOfShip++;				j--;			}		}				return numOfShip;	}

 

转载地址:http://ocpoi.baihongyu.com/

你可能感兴趣的文章
FREEBSD升级及优化全攻略
查看>>
RISC架构服务器开源运动将促使市场需求提升
查看>>
IT治理的成功要诀
查看>>
中化CIO彭劲松:IT治理让我明明白白做事
查看>>
中国惠普公司企业计算及专业服务集团卫东:IT治理最重要就是保证技术与业务有效结合
查看>>
《给初学者的Windows Vista的补遗手册》之064
查看>>
《给初学者的Windows Vista的补遗手册》之063
查看>>
《给初学者的Windows Vista的补遗手册》之062
查看>>
《给初学者的Windows Vista的补遗手册》之057
查看>>
《给初学者的Windows Vista的补遗手册》之056
查看>>
《给初学者的Windows Vista的补遗手册》之045
查看>>
域名1元价,我也来注册一个
查看>>
《给初学者的Windows Vista的补遗手册》之037
查看>>
《给初学者的Windows Vista的补遗手册》之036
查看>>
《给初学者的Windows Vista的补遗手册》之035
查看>>
Spring开发指南 0.8 发布
查看>>
微软宣布将推出XNA Game Studio
查看>>
MySQL宣布加入微软Visual Studio工业伙伴计划
查看>>
菜鸟、夫子、玫林凯与测试
查看>>
无锁编程与分布式编程那个更适合多核CPU?
查看>>