![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
类型总结之——双指针法解题
双指针法
Mona______
好好学习天天向上 o(≧v≦)o
展开
-
leetcode——第3题——最长不含重复字符
题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。/*子字符串:表示得是连续的考察点:1、哈希表 unordered_set2、双指针3、也可以用滑动窗口,滑动窗口其实就是一种双指针。*/class Solution {public: int lengthOfLongestSubstring(string s) { // 因为要不重复,所以首先想到用哈希表,因为字符较多,所以数组不想,又因为不需要与下标关联,所以使用哈希集合足够,原创 2021-06-10 20:11:34 · 58 阅读 · 0 评论 -
leetcode——第904题——水果成篮
题目:在一排树中,第 i 棵树产生 tree[i] 型的水果。你可以从你选择的任何树开始,然后重复执行以下步骤:把这棵树上的水果放进你的篮子里。如果你做不到,就停下来。移动到当前树右侧的下一棵树。如果右边没有树,就停下来。请注意,在选择一颗树后,你没有任何选择:你必须执行步骤 1,然后执行步骤 2,然后返回步骤 1,然后执行步骤 2,依此类推,直至停止。你有两个篮子,每个篮子可以携带任何数量的水果,但你希望每个篮子只携带一种类型的水果。用这个程序你能收集的水果树的最大总量是多少?class原创 2021-05-28 00:13:08 · 271 阅读 · 0 评论 -
leetcode——第209题——滑动窗口
题目:给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。class Solution {public: int minSubArrayLen原创 2021-04-19 12:50:02 · 115 阅读 · 0 评论 -
剑指offer——第48题——最长不含重复字符
题目:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。本题与主站 第3题 相同class Solution {/*子字符串:表示得是连续的考察点:1、哈希表 unordered_set2、双指针 / 动态规划3、也可以用滑动窗口,滑动窗口其实就是一种双指针。如果不用上面的方法,那就是纯暴力解法,纯暴力的话,需要用双层的 for 循环*/public: int lengthOfLongestSubstring(string s) {原创 2021-05-27 00:09:28 · 75 阅读 · 0 评论 -
第22题——链表中倒数第k个节点
题目:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.#include#include#include<unordered_map>using namespace原创 2021-04-16 20:04:59 · 76 阅读 · 0 评论 -
第三题——二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。...原创 2021-04-15 22:26:15 · 70 阅读 · 0 评论 -
leetcode——第977题——有序数组的平方
题目:给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。class Solution {/*1、vector还是数组呀,直接 insert的话,时间复杂度太低,2、if(nums[slow] * nums[slow] > nums[fast] * nums[fast]) 这句倒是可以直接判断出来最终的顺序,但是输出的数组怎么变成平方,就搞了半天3、还需要重新定一个数组,作为输出来用4、感觉很巧妙的,好好细品一下原创 2021-05-26 21:52:47 · 120 阅读 · 0 评论 -
leetcode——第844题——比较含退格的字符串
题目:给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。class Solution {/*使用了一个辅助函数来进行判断辅助函数中用的双指针典型思路,然后在主函数中进行最后的判断。*/public: bool backspaceCompare(string s, string t) { int len1 = isLegal(s);原创 2021-05-26 21:03:36 · 97 阅读 · 0 评论 -
leetcode——第283题——移动零
题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。class Solution {public: void moveZeroes(vector<int>& nums) { int slow = 0; for(int fast = 0; fast < nums.size(); ++fast) { // 1、注意是 用fast下标 对应的元素来进行比较原创 2021-05-26 19:42:56 · 78 阅读 · 0 评论 -
leetcode——第26题——删除数组中的重复项
题目:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。class Solution {/*如果相等,fast 后移 1 位如果不相等,将 fast 位置的元素复制到 slow+1 的位置上,slow 和 fast 都 后移一位优化小技巧:此时数组中没有重复元素,按照上面的方法,每次比较时 nums[p] 都不等于 nums[q],原创 2021-05-26 19:14:58 · 208 阅读 · 0 评论 -
leetcode——第27题——双指针法
题目:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素.示例 1:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长原创 2021-04-18 23:18:14 · 189 阅读 · 0 评论 -
leetcode——第647题——回文子串
题目:给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。class Solution {/*解法二:动态规划五部曲:* 1、确定 dp 数组以及下标的含义 * 本题比较特殊哦,使用了 布尔类型的 dp 数组 * dp[i] [j] :表示区间范围是 [i, j] (注意是左闭右闭区间)的子串是否是回文子串, * 如果是 dp[i] [j] = true, 如果不是 dp[i] [j] =fa原创 2021-05-22 19:44:17 · 97 阅读 · 0 评论 -
leetcode——面试题02.07——链表相交
题目:给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {}原创 2021-05-15 21:23:09 · 89 阅读 · 0 评论