LT1793子数组的最大分数 题解(双指针)

1793. 好子数组的最大分数

题面思路

使用双指针即可,好像叫快慢指针~

代码

typedef long long ll;
class Solution {
public:
    int maximumScore(vector<int>& nums, int k) {
        int l=k-1,r=k+1;
        int ans=nums[k],mi=nums[k];
        while(1){
            while(r<nums.size()&&nums[r]>=mi) r++;
            while(l>=0&&nums[l]>=mi)  l--;
            ans=max(ans,(r-l-1)*(mi));
            if(l==-1&&r==nums.size()){
                break;
            }else if(l==-1){
                mi=min(mi,nums[r]);
                r++;
            }else if(r==nums.size()){
                mi=min(mi,nums[l]);
                l--;
            }else if(nums[r]>=nums[l]){
                mi=min(mi,nums[r]);
                r++;
            }else if(nums[r]<nums[l]){
                mi=min(mi,nums[l]);
                l--;
            }
        }
        return ans;
    }
};
posted @ 2021-05-10 19:32  hunxuewangzi  阅读(58)  评论(0编辑  收藏  举报