当前位置: 首页 > article >正文

救生艇..

本节解决一个救生艇人员问题,即在每搜救生艇承重有限的情况下,需要多少艘救生艇才能容纳所有人.

问题描述:

第i个人的重量为people[i],每搜救生艇最大承载重量为weight,每艘救生艇最多可同时承载两个人,但条件是这些人的重量之和不大于weight.要每个人都有救生艇坐,求至少需要多少救生艇.

思路解析:

根据题目,一艘救生艇做多容纳两个人,十分明显的,应先将体重的数组从小到大排列,让后双指针分别指向第一个人和最后一个人,通过不断判断指针所指的两个人是否可以同坐一艘救生艇来不断计算所需救生艇数量,同时移动两个指针,直到两指针相遇.变量如下:

people变量:表示输入所有人重量的数组

weight变量:表示每艘救生艇所能容纳的最大重量

left变量:表示左指针,起始指向最轻的人

right变量:表示右指针,初始指向最重的人

res变量:表示最终返回的救生艇数量

完整代码如下:

def RescueBoats(self, people, weight):
    # 将人们按照体重从小到大排序
    people.sort()
    
    # 初始化两个指针,left指向最轻的人(数组的开始),right指向最重的人(数组的末尾)
    left = 0
    right = len(people) - 1
    
    # 初始化所需船只数量为0
    res = 0
    
    # 当left指针小于等于right指针时,循环继续
    while left <= right:
        # 每进入一次循环,代表使用了一条船,所以船的数量加1
        res += 1
        
        # 如果最轻的人和最重的人的体重之和不超过船的载重限制
        if people[left] + people[right] <= weight:
            # 将left指针向右移动一位,即考虑下一个体重更重的人
            left += 1
        # 不论是否能够将最轻和最重的人配对,都将right指针向左移动一位,即考虑下一个体重更轻的人
        right -= 1
    
    # 返回所需的船只数量
    return res


http://www.kler.cn/a/417841.html

相关文章:

  • Graphy 是一款终极、易于使用、功能齐全的 FPS 计数器、统计监视器和调试器,适用于您的 Unity 项目。
  • smb cifs samba smbpasswd 笔记241127
  • FreeRTOS之vTaskStartScheduler实现分析
  • shell(2) 变量
  • Fortran mpi在Linux的安装
  • Leetcode20. 有效的括号(HOT100)
  • HOG 算法变形:原理、应用与创新发展
  • 行业分析---2024年蔚来汽车三季度财报及科技日
  • [C#] 对图像进行垂直翻转(FlipY)的跨平台SIMD硬件加速向量算法,兼谈并行处理收益极少的原因
  • 155. TWEEN.JS点按钮,相机飞行靠近观察设备
  • Fastadmin系统配置增加配置字段类型
  • 《安富莱嵌入式周报》第346期:开源2GHz带宽,12bit分辨率,3.2Gsps采样率示波,开源固件安全分析器, 开源口袋电源,开源健康测量,FreeCAD
  • Z2400024基于Java+SSM+mysql+maven开发的社区论坛系统的设计与实现(附源码 配置 文档)
  • 【MySQL】库和表的基本操作
  • VC++网络安全编程范例(12)-PKI编程
  • A02、Java 设计模式优化
  • Chapter 2 - 20. Understanding Congestion in Fibre Channel Fabrics
  • 考前的紧张的一些思考
  • Docker的save和export命令的区别,load和import的区别 笔记241124
  • 上门预约服务小程序开发,便捷生活,一键预约
  • JVM双亲委派机制原理
  • 图像显示的是矩阵的行和列,修改为坐标范围。
  • windows C#-语句
  • HarmonyOS4+NEXT星河版入门与项目实战(25)------UIAbility启动模式(文档编辑案例)
  • SpringMVC-08-json
  • 1.1 数据结构的基本概念