目录
基础知识
两种指针:a.快慢指针 b.左右指针
1)分别解决什么问题
2)如何使用
l26、l27
快慢指针
tips:原地修改注意
l167、 l5、l344
左右指针
l167有二分搜索的思想
1.下标从1开始:给的数组是从0,只不过返回的结果要在计算出的结果基础上+1;(leetcode 167.)
2.关于167为什么只能左指针控制向右增大,右指针控制向左减小:当左右指针左右都有空间可以移动时,依然遵循以上结论,证明如下:
a.左指针向左有空间,说明之前左指针因"sum<target"向右移动,而现在相比之前更靠左数更小(或一样),因为右指针只能向左移动。在以前右指针大的情况下左指针在左边仍会出现"sum<target",说明左指针经过的点不需要再考虑了。
b.右指针同理
l5、l344将数组变成回文、找出最长回文子串问题,是更加清晰的左右指针思想
?运算符
int num=10;
String result;
if(num>0){
result="positive";
}else
result="negative";
等同于
int num=10;
String result=(num>0)?"positive":"negetive";
格式是 :
(表达式)?结果A:结果B
如果表达式为真,则返回结果A,否则返回结果B
教程原文:双指针技巧秒杀七道数组题目 | labuladong 的算法笔记