啊,要找工作了,耽误了好久的刷题重新捡起来。

不再按顺序刷题了(有时间也可以),主要按专题来刷,挑典型题。

这道题比较典型的双指针,两个指针分别初始化在列表最前端和最末尾。

如果两个指针的和大于target,说明总和需要减小,后面那个指针向前。

如果两个指针的和小于target,说明总和需要增大,前面那个指针向后。

这道题是平方数之和,时间复杂度比较低的办法依然是双指针法。

不过这里的判别条件需要做一个变动,因为这里是允许比如1(平方)+1=2的情况,也就是允许指针重叠,while条件需要做一定更改。

值得一提的是,这道题可以先对c取一个平方根,进一步的缩短时间复杂度。

这道题第一反应其实不是双指针哈哈哈哈,要我想我可能第一时间去dp方向想,但是刷的题是双指针的题,就会这么想。

这道题使用双指针来进行“删除”一个字符是比较好想的,但是问题在于怎么删。

因此采用另一种方法:使用双指针来判断——遇到了指针指向的值不相同时,把问题退化为回文串判断问题,分别删除两个指针指向的值,将剩余字符串直接进行字符串比较,从而判断是否为回文串。

由于省去了指针继续向内移动的时间,这种算法时间可以击败90%的用户(内存65%)。

如果哪里有不同见解或者有不懂的可以在文章下评论或email我,我会第一时间联系。