881.BoatstoSavePeople

题目:输入一个字符串和一个数字,字符串的每个元素值代表每个人的重量,数字代表船的最大载重每个船上最多坐俩人,求需要多少船能把所有人载走。

输入:一个字符串people[]和整型limit
输出:船的数量

别人思路:
贪心算法
  对数组进行从小到大排序,判断头和尾相加是不是满足条件(能坐一条船)
  如果满足条件,则尾部指针前移一位,头部指针后移一位,记录加一;
  如果不满足条件,尾部指针迁移一位,记录加一,头部指针不动,因为尾部指针位置 的数和目前最小的数求和都不满足条件,说明他只能自己坐一条船了,所以记录加一。

class Solution {
    public int numRescueBoats(int[] people, int limit) {
        int sum = 0 ;
        int left, right ;
        Arrays.sort(people);
        left = 0 ;
        right = people.length - 1 ;
        while(left<=right){
            sum ++ ;
            if(people[left] + people[right]<=limit){
                left ++ ;
            }
            right -- ;
        }
        return sum ;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值