思路一
暴力法,就是实在没有办法的时候,可以选用暴力法;
这往往是很多人有能力想到但又非常容易忽略的一种方法
思路二
数组转Map,数组的特点是根据索引可以很快的获取到元素的值,但有时候往往需要根据值来获取索引。我们当然可以通过遍历数组来实现,但这样的话时间复杂度就太高了,如果实现转成Map,就可以在时间复杂度为1的情况下实现根据值查找索引的需求;
思路三
数组事先排序,处理有序数组,利用有序的特点往往可以减少很多不必要的操作或者遍历;
思路四
与思路二有相同之处,都是为了解决查找问题的思路;
思路二中式查找确定的值,如果不是确定的值,比如:查找最接近某个数的值,那么思路二就失效了,这时候可以考虑二分查找,往往需要结合思路三;
思路五
双指针遍历,某些情况下的两层遍历可以使用双指针进行一次遍历代替,往往需要结合思路三一起实现;
例题
leetCode第1题:两数之和,需要用到思路二 转map
leetCode第4题:两个有序数组中位数,需要用到两次二分查找
leetCode第11题:三数之和,可以用Map将时间复杂度降到N方,也可以用排序+双指针,时间复杂度同样是N方,空间复杂度可以降到1
leetCode第16题:需要利用思路三和思路五将时间复杂度降低到n的平方;排序 + 双指针
如果觉得《还担心面试手写算法?掌握这些数组算法解题技巧 再也不怕了》对你有帮助,请点赞、收藏,并留下你的观点哦!