双指针
algsup
这个作者很懒,什么都没留下…
展开
-
[双指针]leetcode2444:统计定界子数组的数目(hard)
思路:双指针 + 一次遍历。原创 2022-10-17 17:07:00 · 845 阅读 · 0 评论 -
[两数之和][三指针]leetcode6136:算术三元组的数目(easy)
思路1:hashmap 查询。简单题 medium 做法。原创 2022-08-08 10:14:27 · 284 阅读 · 0 评论 -
[双指针]leetcode1577:数的平方等于两数乘积的方法数(medium)
思路2hashmap计数+暴力枚举。思路1排序+双指针。原创 2022-07-24 17:47:18 · 168 阅读 · 0 评论 -
[双指针][思维题]leetcode777:在LR字符串中交换相邻字符(medium)
题目:题解:代码如下:原创 2022-07-10 20:58:38 · 209 阅读 · 0 评论 -
[双指针][思维题]leetcode6114:移动片段得到字符串(meidum)
题目:题解:代码如下:原创 2022-07-10 18:17:23 · 1626 阅读 · 0 评论 -
[双指针]leetcode825:适龄的朋友(medium)
题目:题解:思路:本题的难点在于读懂题目的意思。代码如下:class Solution {public: /* 这题目意思真难懂:若想x给y发消息,则必然三个条件都不成立,由于条件2包含条件3了,所以条件2不成立,条件3必然不成立,因此我们仅需条件1和条件2同时不成立即可,也就是 0.5*x+7<y<=x,由 x>0.5x+7 => x>14,所以x<=14的不用考虑了。由于x递增时,区间(0.5*x+7,x]也是单调递增的,所以我原创 2022-02-04 18:05:11 · 5627 阅读 · 0 评论 -
[双指针枚举]leetcode633:平方数之和(medium)
题目:题解:思路:双指针从[0,sqrt( c )]向中间枚举两数的平方之和为 c 即可。代码如下:class Solution {public: bool judgeSquareSum(int c) { int l=0,r=sqrt(c); while(l<=r){ long long t=0LL+l*l+r*r; if(t==c)return true; else i原创 2022-02-04 12:11:53 · 428 阅读 · 0 评论 -
[双指针]leetcode1712:讲数组分成三个子数组的方案数(medium)
题目:题解:这道题考试时真不会做,只想到了前缀和,并没有想到双指针,麻了,我是废物。思路:双指针由于数组元素是非负的,所以区间和具有单调性,所以我们可以枚举两个分界点。首先我们可以先固定第二个分界点 i,来寻找第一个分界点 x 的上下界 [j,k],那么在 x 的上下界满足left<=mid;mid<=right情况下,此次的方案数为k-j+1。关于 i,j,k 的初始化讲解:i=3 表示 i 前面最少有两段,j=2 k=2 表示第一个边界从第二个点开始扩展,剩下的讲解在代原创 2021-02-20 12:12:49 · 334 阅读 · 0 评论 -
[快慢指针][数组]leetcode80:删除排序数组中的重复项 II (medium)
题目:80. 删除排序数组中的重复项 II题解:快慢指针代码如下:class Solution {public: //题解:快慢指针,sp表示慢指针,用来记录可以覆写数据的位置;fp表示快指针,用来遍历整个数组 int removeDuplicates(vector<int>& nums) { if(nums.size(...原创 2019-12-19 23:15:13 · 222 阅读 · 0 评论 -
[链表][双指针]leetcode86:分隔链表(medium)
题目:题解:双指针法before链表用来存放比x小的节点,after节点用来存放比x大的节点。注意要设置头节点,因为这样可以减少判断条件。代码如下:class Solution {public: //双指针法,before链表存放比x小的节点,after存放比x大的节点 ListNode* partition(ListNode* head, int x) {...原创 2019-11-30 11:10:04 · 1169 阅读 · 0 评论 -
[双指针]leetcode11:盛最多水的容器(medium)
题目:题解:双指针,i与j之间间距每次乘以较小值,防止水溢出代码如下:class Solution {public: //思路:双指针,i与j之间间距每次乘以较小值,防止水溢出 int maxArea(vector<int>& height) { int i=0,j=height.size()-1,result=0; ...原创 2019-11-25 20:04:39 · 232 阅读 · 1 评论 -
[双指针]leetcode16:最接近的三数之和(medium)
题目:题解:双指针与15.三数之和方法类似,简单来说会了三数之和,那么这题也就会了。代码如下:class Solution {public: int threeSumClosest(vector<int>& nums, int target) { if(nums.size()<3)return -1; sort...原创 2019-11-25 16:58:19 · 161 阅读 · 0 评论 -
[双指针]leetcode18:四数之和(medium)
题目:题解:双指针本题在15.三数之和的基础上加了一层循环罢了,时间复杂度变为O(n3)了。代码如下:class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { sort(nums.begin(),n...原创 2019-11-25 16:42:16 · 170 阅读 · 0 评论 -
[双指针]leetcode15:三数之和(medium)
代码】[双指针]leetcode15三数之和(medium)原创 2019-11-25 16:17:06 · 1338 阅读 · 0 评论 -
[数学][双指针]leetcode9:回文数(easy)
题目:题解:题解1:双指针将数字转换为字符串,然后利用首尾指针向字符串中间走,若首尾指针所指的字符不想等,则返回false,否则最后left==rigth,那么就是回文数了。题解2:数学首先排除负数,因为负数一看就不是回文数。然后将数字x的尾数字依次添加到cur后面,最后判断x是否等于cur,具体看代码。代码如下:class Solution {public: /...原创 2019-11-24 17:31:33 · 363 阅读 · 0 评论 -
[双指针][字符串]leetcode125:验证回文串(easy)
题目:题解:双指针法使用首尾指针向中间移动,若遇到标点符号,我们需要使用isalnum()判断跳过即可;若遇到大写字母,我们需要使用tolower()转换为小写字符即可,这个函数对于数字和小写字母不做转换仅仅针对大写字母。代码如下:class Solution {public: //题解:双指针法 bool isPalindrome(string s) { ...原创 2019-11-02 14:58:53 · 306 阅读 · 0 评论