这道题就很简单了,注意两点:
1.用双指针方式;
2.后指针要记得指向待删除节点的父亲节点(之前我是想,单链表删除节点的话,直接将待删除节点的后继节点内容放置到待删除节点处,然后删除待删除节点的next。)上述提到的删除方法其实是可取的,两种方法都不错。
也没啥难度,就是单纯的dp动态规划即可。corner case的话,考虑当n=0时,是不能加入空字符串的。
1.首先应该把head以及head->next给处理完成,因为这涉及到返回头指针;
2.剩下的就两个一循环,记得保持parentNode->firNode->secNode->others这样的格式,在调换firNode and secNode时,记得先将parentNode指向secNode,然后firNode指向others,最后是secNode指向firNode。
做到心态爆炸,这道题就完全是corner case,感觉自己啥都没考虑到。
1.溢出问题。为啥会溢出呢?当时我没想清楚,后来明白了,原来int表示的范围是-pow(2, 31)到pow(2, 31)-1,卧槽我这上来就用了一个abs函数,那不得直接爆炸???所以我必须要将输入数据包括中间用到的数据都处理成long
2.针对溢出情况,我需要单独处理的,这不是范围的问题,这是特殊处理。想一想,也只有一种溢出情况。
这道题就完全抓瞎了,根本就没啥好的思路。
实现的过程没啥好说的,corner case没啥好考虑的。(注意处理一下相等情况)