B站左程云算法视频高级班04

这篇博客主要介绍了如何解决数组中根据体重分配船只的问题,以及字符串中最长回文子序列和回文子串的算法。讨论了动态规划在这些问题中的应用,包括不同的状态转移方程和边界条件处理。
摘要由CSDN通过智能技术生成

题目一:给定一个数组arr,长度为N,且每个值都是正数,代表N个人的体重。再给定一个正数limit,代表一艘船的载重,一下是坐船规则:

1)每艘船最多只能坐俩个人

2)乘客的体重和不能超过limit

返回如果同时让这N个人过河至少需要几条船

先排序:假设

【1,1,3,3,3,4,4,5,5,5,7,7,9,9,9】 limit = 10

先看小于等于limit/2的最右的位置

如果没有则返回N条船

双指针

【L】+【R】 ? limit

大于时  L左移

小于等于时,R右移

最后,统计

 统计数量:勾号a个,x号b个,三角c个

一共需要a+【b/2】(向上取整)+c条船

 

//请保证arr有序
public static int minBoat(int[] arr, int limit){
    //arr排个序
    if(arr == null || arr.length == 0){
        return 0;
    }
    //遍历数组arr,如果发现
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值