双指针算法
树图思维导图提供 双指针 在线思维导图免费制作,点击“编辑”按钮,可对 双指针 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:33c446855350d39ea81679c4f864cabe
双指针思维导图模板大纲
对于一类题目,使用一个指针可能导致效率不足,这时候可以通过两个指针,提高效率
一个从头,一个从尾(回文类型)
一个从头,另一个与第一个同向(最长不连续子序列)
回文
对于一个字符串,一个从0开始,另一个从最后一位开始,检查两个值是否相同
while(p1<=p2){ if(s[p1]!=s[p2]){ flag=1; break; } p1++;p2--; }
最长不重复子区间
对于一个数组,两个都从1开始,第二个不停向后走,若不符合条件,第一个向前进一位,保证区间不会重复
for(int i=1,j=1;i<=n;i++){ book[a[j]]++; while(book[a[j]]>=2){ book[a[i]]--; i++; } maxs=max(maxs,j-i+1); }
把数组有奇数挪到序列前方,所有偶数挪到序列后方(可以改变顺序)
思路:一个指针从第一位开始,另一个从最后一位开始,第一个指针找到第一个不是奇数的数,第二个指针找到第一个不是偶数的数,随后两者交换
for(int p1=1;p1<=n;p1++){ while(a[p1]%2==1&&p1<=n) p1++; while(a[p2]%2==0&&p2>=1) p2--; if(p1>p2) break; swap(a[p1],a[p2]); }
树图思维导图提供 转速、电流双闭环控制的直流调速系统 在线思维导图免费制作,点击“编辑”按钮,可对 转速、电流双闭环控制的直流调速系统 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:07d36d7364c39a2fa67158deba01b8f5
树图思维导图提供 AI不能取代优秀教师 | 双语阅读 在线思维导图免费制作,点击“编辑”按钮,可对 AI不能取代优秀教师 | 双语阅读 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:24ceae203d32f3709ee938e7a5dfebcb