1526. 形成目标数组的子数组最少增加次数;2008. 出租车的最大盈利;1589. 所有排列中的最大和

1526. 形成目标数组的子数组最少增加次数

核心思想:差分数组。对于一个数组a,要想从全为0的数组增加1变为它,等价于从a减少1变为全0的数组。然后a有一个差分数组d,对于a区间的[L,R]减少1操作等价于对d[L]-1,然后d[R+1]+1。你想让a变为全0,即让d也变为全0,每次操作相当于让d的前面一个数-1,后面一个数+1。由于d的所有前缀和是大于等于1的,因为前缀和代表的是a中的一个数。所以我们需要的最少操作次数就为让d中的正数全为0的次数,即正数和。因为你对正数减少一你可以让后面的负数加一,又因为前缀和大于等于0的,所以让正数全为0后,你的负数肯定也全为0了,具体证明可以看官方题解。

2008. 出租车的最大盈利

核心思想:动态规划。这题感觉只要你把f[i]的定义写好就行了,具体看代码注释。

1589. 所有排列中的最大和

核心思想:用差分数组统计出下标个数,然后下标个数最大的对应nums的最大值即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值