论代码的效率和可读性的权衡
高效代码可读性差:
有一些代码,占用额外内存小,即run in place,且执行的速度快,即复杂度O()低,但是可读性差,即使注释了,修改起来也容易出错,如:
对链表的操作:举一个leetcode的例子:(这个例子不是很典型,能说明问题即可)
reverse a linklist from m to n;
1->3->4->5->null and m,n(ex:2,4);
return 1->5->4->2->null;
上面例子一开始可以想到,头插法,或者将范围内的那一段用新的处理过的链表替换掉,即只需要处理该片段的头和尾部,当然可能还有其他方法,这里先不考虑;
于是,头插法不是很复杂,但是在这里不用额外的内存时,需要频繁的改变next指针和对pre元素做临时保存,使得代码可读性差,所以可以考虑以下方案:
在替换的内存小时,可以采用后者,让代码可读性高些,方便维护和(被替代~更容易被炒鱿鱼的风险哈哈)
在内存小时,采用前者,爱怎么指怎么指,看不懂不管哈哈哈