![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法:双指针
双指针题
拾牙慧者
这个作者很懒,什么都没留下…
展开
-
《leetcode : 647. 回文子串 思考分析双指针解法》
647. 回文子串如何确定是回文串:找中心然后往两边扩散,判断是否对称即可。在遍历中心点的时候,注意中心点可以是一个元素也可以是两个元素。class Solution {public: int cal_two_extend(const string& s,int i,int j,int n) { int res = 0; //以(i+j)/2为中心点,向左右扩散,计算该中心点构成的回文子串数目 while(i >= 0原创 2021-04-26 14:35:44 · 166 阅读 · 0 评论 -
单调栈 leetcode整理(三)
42. 接雨水901. 股票价格跨度581. 最短无序连续子数组单调栈的题目暂时就到这儿了,接下来继续之前的双指针类型题目吧。原创 2020-12-12 17:49:50 · 211 阅读 · 0 评论 -
leetcode 42. 接雨水 思考分析(暴力、动态规划、双指针、单调栈)
前三种思路都是按照列来算,单调栈是按照行来计算的。所以单调栈的方法并不好理解,还需巩固。原创 2020-12-12 12:13:23 · 267 阅读 · 0 评论 -
leetcode 344. 反转字符串 541. 反转字符串 II 双指针解
目录leetcode 3441、题目2、思考541. 反转字符串 II1、题目2、思考leetcode 3441、题目2、思考典型的双指针解法:一个从前往后,一个从后往前,指针对应的交换即可。class Solution {public: void reverseString(vector<char>& s) { int start=0; int end=s.size()-1; if(end == -1) ret.原创 2020-11-13 11:04:40 · 231 阅读 · 0 评论 -
leetcode 202. 快乐数 思考分析(哈希集合与双指针解)
1、题目编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。思考分析对一个数不断进行get_sum操作,那么最终可能的结果有两种可能:1、得到12、计算的数陷入某种循环,然后会有重复的数出现如果得到1,直接返回true;如果检测到重复原创 2020-11-06 11:03:08 · 205 阅读 · 0 评论 -
LeetCode 206. 反转链表 思考分析
题目反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?迭代+双指针从某公众号(代码随想录)搬过来的gif图:看了能很好地理解转置的过程class Solution {public: ListNode* reverseList(ListNode* head) { ListNode*原创 2020-10-09 18:45:29 · 181 阅读 · 0 评论 -
LeetCode 18. 四数之和 思考分析(双指针解)
目录需要注意的几点1、去除剪枝操作2、去重操作的细节code以及效果:题目给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[[-1, 0, 0, 1],[-原创 2020-10-09 11:22:34 · 237 阅读 · 0 评论 -
LeetCode 15. 三数之和 思考分析(双指针解)
目录初解:未考虑去重二解:未考虑去重位置三解:AC初解:未考虑去重class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> result; //对nums排序 sort(nums.begin(), nums.end()); int n原创 2020-10-09 10:38:11 · 197 阅读 · 1 评论 -
LeetCode 27.移除元素 思考分析
暴力法:0ms过class Solution {public: int removeElement(vector<int>& nums, int val) { int size = nums.size(); for (int i = 0; i < size; i++) { if (nums[i] == val) { // 发现需要移除的元素,就将数组集体向前移动一原创 2020-10-08 23:14:38 · 173 阅读 · 0 评论 -
LeetCode 167. 两数之和 II - 输入有序数组 思考分析
目录1、暴力,超时2、双指针+滑动窗口+条件限制 AC3、观看题解(吸取他人经验)1、暴力,超时class Solution {public: vector<int> twoSum(vector<int>& numbers, int target) { int n = numbers.size(); int flag=0; vector<int> res; for(int i=0;i&l原创 2020-10-08 21:21:44 · 199 阅读 · 0 评论