Leetcode刷题总结(一):二分查找、双指针

153 阅读1分钟

常言道,没有总结的刷题不是好刷题。

目前刷题还特别少,总结不成系统的体系,先把每道题积累的经验写下来。后面随着积累题目增多,掌握知识系统化,还会进一步深入总结。

刷题审题经验总结

1.不要干想,草稿纸放手边。像做数学题一样对待每一道题。

2.有思路后,一定用示例在纸上跑一遍。很多时候示例中会给到提示。

3.考虑边界值,利用好数学思维,做到不重不漏。

二分查找

1.二分查找题,思维简洁、细节魔鬼,如果在脑子里草草一过,自以为会写了,其实想到和做到是两码事。一般需要关注的细节有:

①区间范围:左界left、右界right

②区间范围的更新方式:当[目标值]target>[中值]mid时,说明应向右找,left=mid+1;当[目标值]target<[中值]mid时,说明应向左找,right=mid-1

③二分查找何时结束:left>right时

④注意求[中值]mid时left与right直接相加的溢出问题,mid = left + (right-left)/2

2.二分查找特点:时间复杂度logn(<n),适用于有序数组。

3.二分查找体现了“减而治之”的思想,是一种减少问题规模的办法。

双指针

1.当问题对时间复杂度和空间复杂度做出限制时,考虑双指针。双指针常常能够一次遍历、原地空间解决问题。

2.双指针可以有逆向移动双指针、同向移动双指针(快指针和慢指针)。可以根据具体的问题,考虑用哪类双指针。