终极代码随想录 DAY60 最后一天

文章讲述了作者在为期3个月的代码训练营中,学习并掌握了包括最大矩形面积算法在内的新技能,特别提到了使用双指针方法解决复杂问题的过程,强调了这个算法在实际项目中的重要性,如嵌入式开发中的要求.
摘要由CSDN通过智能技术生成

说是最后一天 其实后面还有图论和等等什么的 不过算是代码训练营的最后一天吧 还是历经整整3个月终于刷完了 主要因为是转行 其中很多算法根本没接触过 耗费了比较多的时间 不过嵌入式对算法的话要求也没那么高 后面就是hot100 和剑指offer之类的 就差不多了 

class Solution {

public:

    int largestRectangleArea(vector<int>& heights) {

        vector<int> leftindex(heights.size());

        vector<int> rightindex(heights.size());

        leftindex[0]=-1;

        for(int i=1;i<heights.size();i++){

            int t=i-1;

            while(t>=0&&heights[t]>=heights[i])

                t=leftindex[t];

            leftindex[i]=t;

        }

        rightindex[heights.size()-1]=heights.size();

        for(int i=heights.size()-2;i>=0;i--){

            int t=i+1;

            while(t<heights.size()&& heights[t]>=heights[i])

                t=rightindex[t];

            rightindex[i]=t;

        }

        int result=0;

        for(int i=0;i<heights.size();i++){

            int sum=heights[i]*(rightindex[i]-leftindex[i]-1);

            result=max(sum,result);

        }

        return result;

    }

};

双指针 还是有些难度的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值