算法c++入门day3(贪心算法)

1.合并区间

 算法思路:

先对输入的区间进行排序,然后对前后两个区间进行合并

合并思路:

1.当要返回的区间集中没有区间时 直接加入第一个区间

2.当有区间集中有区间时 我们只需要看最后一个区间的右端点和新的即将加入的区间的左端点进行对比 若其右端点比左端点小 说明两个区间没有交集 大于等于则有交集 有交集取大作为原来区间的右端点 两个区间就完成了合并

注意点:要注意访问区间集最后一个区间左端点和右端点用的是vector<int> nums=answer.back()函数 左右端点分别是nums[0] 和nums[1]

2.最大数组和问题

算法思路:

 要找出最大和的连续子数组,那么我们只需要比较加入当前的值后的sum值与当前元素的大小,sum的值取两者较大的一个 。如果sum比最大值还大,那么我们将他记为最大值。

实际上sum的选取就是双指针问题的简化版,如果前面的值加上当前的值比当前的值大 那么右指针继续往后移 若当前值更大 那么坐指针移到当前的位置 而我们的sum值就为左右指针区间值的和。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值