同向双指针题目练习
创始人
2024-05-24 19:22:15
0

3.无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
经典题目,不再赘述,思路直接看代码

class Solution {public int lengthOfLongestSubstring(String s) {int max = 0, left = 0, right = 0;boolean[] map = new boolean[128];while (right < s.length()) {while (right < s.length() && !map[s.charAt(right)]) {map[s.charAt(right)] = true;right++;}max = Math.max(max, right - left);map[s.charAt(left)] = false;left++;}return max;}
}

209.长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 target 。

找出该数组中满足其和 ≥ target 的长度最小的 连续子数组,并返回其长度。如果不存在符合条件的子数组,返回 0 。

输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
输入:target = 4, nums = [1,4,4]
输出:1

参考第3题,写出了如下代码。
也是双指针,只是第3题要求的是最长,右指针走到终点即可退出;而此题要求的是最短,右指针走到终点后还需要看一下左指针。

class Solution {public int minSubArrayLen(int target, int[] nums) {int res = 999999, left = 0, right = 0, sum = 0;while (right < nums.length) {while (right < nums.length && sum < target) {sum += nums[right];right++;}if (sum >= target) {res = Math.min(res, right - left);sum -= nums[left];left++;}}while (left < nums.length && sum >= target) {res = Math.min(res, right - left);sum -= nums[left];left++;}return res == 999999 ? 0 : res;}
}

题解看到的更简洁版本,总体思路是一样的,可以看看细微差别,为什么别人这么写更好更简洁:

class Solution {public int minSubArrayLen(int target, int[] nums) {int res = 999999, left = 0, right = 0, sum = 0;while (right < nums.length) {sum += nums[right];while (sum >= target) {res = Math.min(res, right - left + 1);sum -= nums[left];left++;}right++;}return res == 999999 ? 0 : res;}
}

713. 乘积小于 K 的子数组

给你一个整数数组 nums 和一个整数 k ,请你返回子数组内所有元素的乘积严格小于 k 的连续子数组的数目。
老思路,思路明晰,看代码即可:

class Solution {public int numSubarrayProductLessThanK(int[] nums, int k) {int left = 0, right = 0, res = 0, multi = 1;while (right < nums.length) {multi *= nums[right];while (left <= right && multi >= k) {multi /= nums[left];left++;}res += (right - left + 1);right++;}return res;}
}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...