以终为始在日常生活中指的是先确定目标,再做好计划。之前读管理学的书的时候,学到了这个概念。
而在算法中,以终为始指的是从结果反向推,直到问题的初始状态。
那么什么时候适合反向思考呢?简单的原则就是:
- 正向思考的情况比较多
- 代码比较难写或者算法复杂度过高
这个时候我们可以考虑反向操作。
我的习惯是如果直接求解很难,我会优先考虑使用能力检测二分,如果不行我则会考虑反向思考。
关于能力检测二分,可以在我的公众号中找到,大家可以在《力扣加加》回复二分获取。
今天西法通过三道题来给大家聊聊到底怎么在写算法题的时候运用以终为始思想。