博客
关于我
881. Boats to Save People
阅读量:288 次
发布时间:2019-03-01

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

要解决这个问题,我们需要找到最少的船数,使得每个人的体重不超过船的最大载重量,并且每条船最多载两个人。以下是详细的解决方案:

方法思路

  • 排序:首先对每个人的体重进行排序。这可以帮助我们更容易地找到合适的搭档,以最小化船的数量。
  • 双指针法:使用两个指针,左指针从数组的最左端开始,右指针从最右端开始。尝试让左指针和右指针所指的人一起乘一条船。如果他们的总体重不超过船的限制,那么他们可以一起乘一条船,并将两个指针都向中间移动一位,并增加船的数量。否则,右指针所指的人必须单独乘一条船,右指针不动,左指针向右移动一位,并增加船的数量。
  • 边界处理:当左指针和右指针相遇时,最后一个剩下的那个人必须单独乘一条船。
  • 这种方法的时间复杂度主要由排序操作决定,为O(n log n),而双指针遍历的时间复杂度为O(n),因此总体复杂度为O(n log n),适用于题目给定的约束条件。

    解决代码

    import java.util.Vector;public class Solution {    public int numRescueBoats(Vector
    people, int limit) { // 对人数组进行排序 for (int i = 0; i < people.size(); i++) { for (int j = i + 1; j < people.size(); j++) { if (people[i] > people[j]) { // 交换位置 int temp = people[i]; people.set(i, people[j]); people.set(j, temp); } } } int ans = 0; int l = 0, r = people.size() - 1; while (l <= r) { // 当前两个人的总重量 int sum = people[l] + people[r]; if (sum <= limit) { // 两个人可以一起乘船 l++; r--; ans++; } else { // 右边的人单独乘船 ans++; r--; } } return ans; }}

    代码解释

  • 排序:使用双重循环对people数组进行排序,确保从小到大排列。
  • 双指针初始化:左指针l从数组开头开始,右指针r从数组末尾开始。
  • 循环处理:在while循环中,检查当前左指针和右指针所指的人的总重量。如果总重量小于等于船的限制,他们一起乘一条船,两指针都向中间移动一位,并增加船的数量。否则,右指针所指的人单独乘一条船,右指针不动,左指针向右移动一位,并增加船的数量。
  • 返回结果:循环结束后,返回船的总数量。
  • 这种方法确保了我们以最小的船数满足所有条件,同时处理了所有可能的边界情况。

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

    你可能感兴趣的文章
    NVelocity标签使用详解
    查看>>
    nvidia-htop 使用教程
    查看>>
    oauth2-shiro 添加 redis 实现版本
    查看>>
    OAuth2.0_JWT令牌-生成令牌和校验令牌_Spring Security OAuth2.0认证授权---springcloud工作笔记148
    查看>>
    OAuth2.0_JWT令牌介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记147
    查看>>
    OAuth2.0_介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记137
    查看>>
    OAuth2.0_完善环境配置_把资源微服务客户端信息_授权码存入到数据库_Spring Security OAuth2.0认证授权---springcloud工作笔记149
    查看>>
    OAuth2.0_授权服务配置_Spring Security OAuth2.0认证授权---springcloud工作笔记140
    查看>>
    OAuth2.0_授权服务配置_令牌服务和令牌端点配置_Spring Security OAuth2.0认证授权---springcloud工作笔记143
    查看>>
    OAuth2.0_授权服务配置_客户端详情配置_Spring Security OAuth2.0认证授权---springcloud工作笔记142
    查看>>
    OAuth2.0_授权服务配置_密码模式及其他模式_Spring Security OAuth2.0认证授权---springcloud工作笔记145
    查看>>
    OAuth2.0_授权服务配置_资源服务测试_Spring Security OAuth2.0认证授权---springcloud工作笔记146
    查看>>
    OAuth2.0_环境介绍_授权服务和资源服务_Spring Security OAuth2.0认证授权---springcloud工作笔记138
    查看>>
    OAuth2.0_环境搭建_Spring Security OAuth2.0认证授权---springcloud工作笔记139
    查看>>
    oauth2.0协议介绍,核心概念和角色,工作流程,概念和用途
    查看>>
    OAuth2授权码模式详细流程(一)——站在OAuth2设计者的角度来理解code
    查看>>
    oauth2登录认证之SpringSecurity源码分析
    查看>>
    OAuth2:项目演示-模拟微信授权登录京东
    查看>>
    OA系统多少钱?OA办公系统中的价格选型
    查看>>
    OA系统选型:选择好的工作流引擎
    查看>>