二分法
-
暴力解法时间复杂度:O(n)
-
二分法时间复杂度:O(logn)
循环不变量原则
双指针法
双指针法(快慢指针法):通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
-
暴力解法时间复杂度:O(n^2)
-
双指针时间复杂度:O(n)
数组中的元素为什么不能删除,主要是因为以下两点:
-
数组在内存中是连续的地址空间,不能释放单一元素,如果要释放,就是全释放(程序运行结束,回收内存栈空间)。
滑动窗口
-
暴力解法时间复杂度:O(n^2)
-
滑动窗口时间复杂度:O(n)
滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将O(n^2)的暴力解法降为O(n)。
模拟行为
循环不变量原则,真正解决题目的代码都是简洁的,或者有原则性的。