
📘北塵_:個人主頁
🌎個人專欄:《Linux操作系統》《經典算法試題 》《C++》 《數據結構與算法》
??走在路上,不忘來時的初心
文章目錄
- 一、將x減到0的最小操作數
-
- 二、無重復的最長子串
-
- 三、最大連續為1的個數
-
- 四、長度最小的子數組
-
一、將x減到0的最小操作數
1、題目講解

2、講解算法原理

3、代碼實現
class Solution {
public:int minOperations(vector<int>& nums, int x) {int n=nums.size(),ret=0,sum=0,target,len=-1;for(int i=0;i<n;i++)ret+=nums[i];target=ret-x;if(target<0) return -1;for(int left=0,right=0;right<n;right++){sum+=nums[right];while(sum>target)sum-=nums[left++];if(sum==target)len=max(len,right-left+1);}if(len==-1) return len;else return n-len;}
};
二、無重復的最長子串
1、題目講解

2、講解算法原理

3、代碼實現
class Solution {
public:int lengthOfLongestSubstring(string s) {int n=s.size();int count[128]={0},len=0;for(int left=0,right=0;right<n;right++){count[s[right]]++;while(count[s[right]]==2)count[s[left++]]--;len=max(len,right-left+1);}return len;}
};
三、最大連續為1的個數
1、題目講解

2、講解算法原理

3、代碼實現
class Solution {
public:int longestOnes(vector<int>& nums, int k) {int n=nums.size(),zero=0,len=0;for(int left=0,right=0;right<n;right++){if(nums[right]==0) zero++;while(zero>k)if(nums[left++]==0) zero--;}return len;}
};
四、長度最小的子數組
1、題目講解

2、講解算法原理

3、代碼實現
class Solution {
public:int minSubArrayLen(int target, vector<int>& nums){int n=nums.size(),len=INT_MAX;int sum=0;for(int left=0,right=0;right<n;right++){sum+=nums[right];while(sum>=target){len=min(len,right-left+1);sum-=nums[left];left++;}}return len==INT_MAX?0:len;}
};