双指针
nlp87v5
这个作者很懒,什么都没留下…
展开
-
双指针/二分法【有效三角形的个数】一题双解
Question:给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。本题实质是找到符合条件的【三元组值】。【二分法】我们在枚举前对数组进行升序排序,通过从前向后枚举最小值下标i和较小值下标j,可以在求解最大值下标m的时候固定前两个解,固定两个值的情况下我们只需要在第三个值的选取上做文章即可。不难发现,根据式子nums[i] + nums[j] > nums[m],我们只需要找到符合该式子的m的最大下标k,从j+1到k均为符合条件的解。问题聚焦到如.原创 2021-10-20 16:07:17 · 141 阅读 · 0 评论 -
力扣#424 替换后的最长重复字符(难度:中等)
题目:给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换k次。在执行上述操作后,找到包含重复字母的最长子串的长度。注意:字符串长度 和 k 不会超过104。解题思路:本题利用双指针+滑动窗口的方法进行求解。初始窗口的宽度为1,我们不断的通过向当前窗口覆盖的子串后面追加一个字符看是否能满足我们的要求,那么如何判断该字符串是否满足我们的要求:如果当前字符串中的出现次数最多的字母个数+K大于串长度,那么这个串就是满足条件的;我们维护...原创 2021-08-26 16:35:58 · 118 阅读 · 0 评论 -
力扣#413 等差数列划分(难度:中等)
题目:如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。子数组 是数组中的一个连续序列。示例1:输入:nums = [1,2,3,4]输出:3解释:nums 中有三个子等差数组:[1, 2, 3]、[2, 3, 4] 和 [1,2,3,4] 自身。解题思路:我们以原创 2021-08-25 15:49:57 · 155 阅读 · 0 评论 -
力扣#395 至少有K个重复字符的最长子串(难度:中等)
题目:给你一个字符串s和一个整数k,请你找出s中的最长子串,要求该子串中的每一字符出现次数都不少于k。返回这一子串的长度。解题思路:假设长度t的一段区间满足要求的话,t+1长度的区间是否满足条件是不确定的,取决于t+1个位置出现的字符是否在原有区间内:1. 如果新位置的字符在原有区间内,那必然还是满足出现次数大于K;2. 如果新位置的字符在原有区间没出现过,那新字符的出现次数只有一次,那必然不满足要求;因此我们无法使用二分法,相应的也无法直接使用【滑动窗口】+【双指...原创 2021-08-22 16:38:31 · 137 阅读 · 0 评论 -
力扣#16 最接近的三数之和(难度:中等)
题目:给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。解题思路:本题使用排序+双指针的方法,对数组进行升序排序,用res记录当前最优解,遍历数组: 令前指针指向下一个元素,后指针...原创 2021-08-02 19:49:36 · 115 阅读 · 0 评论 -
力扣#11 称最多水的容器(难度:中等)
题目:给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0) 。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。解题思路:...原创 2021-07-31 21:13:33 · 82 阅读 · 0 评论 -
力扣#3 无重复字符的最长子串(难度:中等)
题目:给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。解题思路:本题考查双指针+滑动窗口思想。每次用双指针和一个哈希map维护一个子串,哈希表中以(字符,出现下标)的格式记录字串信息,前指针记录子串的开始,后指针向后移动,当移动到一个map中存在的字符,滑动窗口向后移动,分为两个步骤:1. 首先确定前后指针的位置,由于后指针指向的字符与字串中某个字符重复,所以前指针为哈希表中记录的重复字符出现的下标的下一个位置,后指针向后移动一个,2. 更新哈希表和最长字串长度...原创 2021-07-30 16:42:13 · 124 阅读 · 0 评论