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;
}
};