1. 往往来说,一个题目会至少涉及两个东西:变量和数据量。在给出算法的时候,必须要考虑两者的特殊情况,通常就是两者都非常的大。
例如,实现算法找到一个单向链表中倒数第n个元素。
这个问题有很多解法,其中一个就是利用一个临时buffer来存储遍历的元素,这样只需要一次遍历就可以得到这些元素。然而,如果n非常大的时候,这个临时的buffer所占用空间就过大,也就无法达到最优解了。
2. 对于一个链表的问题,一种很普遍的解法就是设置两个指针。而这两个指针的移动关系往往就是题目中的关键关系。
1. 往往来说,一个题目会至少涉及两个东西:变量和数据量。在给出算法的时候,必须要考虑两者的特殊情况,通常就是两者都非常的大。
例如,实现算法找到一个单向链表中倒数第n个元素。
这个问题有很多解法,其中一个就是利用一个临时buffer来存储遍历的元素,这样只需要一次遍历就可以得到这些元素。然而,如果n非常大的时候,这个临时的buffer所占用空间就过大,也就无法达到最优解了。
2. 对于一个链表的问题,一种很普遍的解法就是设置两个指针。而这两个指针的移动关系往往就是题目中的关键关系。