LeetCode双指针合集

张开发
2026/4/16 17:42:16 15 分钟阅读

分享文章

LeetCode双指针合集
leetcode209. 长度最小的子数组class Solution { public: int minSubArrayLen(int target, vectorint nums) { int sum0; int sznums.size(); int left0; int anssz1; for(int i0;isz;i){//右端点 sumnums[i]; while(sumtarget){ ansmin(ans,i-left1); sum-nums[left]; left; } } return ans sz 1 ? 0 : ans; } };Leetcode713. 乘积小于 K 的子数组class Solution { public: int numSubarrayProductLessThanK(vectorint nums, int k) { //左端点l右端点r。 //如果[l,r]这个区间满足要求那么[l1,r]...[r,r]都满足要求共L-r1个 if(k1) return 0; int ans0; int prod1; int left0; for(int i0;inums.size();i){//遍历右端点 prod*nums[i]; while(prodk){ prod/nums[left]; left; } ans(i-left1); } return ans; } };Leetcode3. 无重复字符的最长子串class Solution { public: int lengthOfLongestSubstring(string s) { int ans0; unordered_mapchar,int mp; int left0; for(int i0;is.size();i){ mp[s[i]]; while (mp[s[i]]1){ mp[s[left]]--;//此时右端点的字符和前面的有重复从左端点一直往出删直到无重复 left; } ansmax(ans,i-left1); } return ans; } };

更多文章