本文主要是介绍灵神算法题单——不定长滑动窗口(求最短最小),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
209. 长度最小的子数组
class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int ant=0,mi=1000005;int q[100009];int hh=0,tt=-1;for(int i=0;i<nums.size();i++){q[++tt]=nums[i];ant+=nums[i];while(hh<=tt&&ant>=target){mi=min(mi,tt-hh+1);ant-=q[hh];hh++;}}if(mi==1000005)return 0;return mi;}
};
1234. 替换子串得到平衡字符串
class Solution {
public:int balancedString(string s) {unordered_map<char,int> m;int mi=100005;for(auto i:s)m[i]++;int l=s.size(),cl=l/4;if(m['Q']==cl&&m['W']==cl&&m['E']==cl&&m['R']==cl)return 0;for(int i=0,j=0;i<l;i++){m[s[i]]--;while(m['Q']<=cl&&m['W']<=cl&&m['E']<=cl&&m['R']<=cl){mi=min(mi,i-j+1);m[s[j]]++;j++;}}return mi;}
};
1574. 删除最短的子数组使剩余数组有序
class Solution {
public:int findLengthOfShortestSubarray(vector<int>& arr) {int n=arr.size(),r=n-1;while(r&&arr[r-1]<=arr[r])r--;if(r==0)return 0;int ant=r;for(int i=0;i==0||arr[i-1]<=arr[i];i++){while(r<n&&arr[r]<arr[i])r++;ant=min(ant,r-i-1);}return ant;}
};
这篇关于灵神算法题单——不定长滑动窗口(求最短最小)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!