203.移除链表元素
1.这个移除链表的原理已经懂了。
2.和我的方法差不多,但卡哥的代码没有用到temp变量,节省了内存。
3.当遇到要删除的元素时,prev指向待删除元素的下一个节点后,这个时候prev是否需要移动要看cur移动后对应的节点是否还是待删除的元素,如果是prev就不需要移动,因为还是待删除节点的前一个节点,如果不是prev就需要移动一位。
4.整体还行,半个小时左右,主要是prev是否移动那里没有想清楚。
707.设计链表
1.觉得这个题太复杂了,涉及到链表操作太多,对javascript class语法不太熟悉。删除节点那里比较容易实现,又有index这个参数,感觉代码量较大。
2.首先没有意识去定义size变量,计算机的存储空间那么大,总是觉得引入变量会让题变得复杂,其实要看你引入的变量有没有意义。dummyhead的设置感觉会让代码简洁的多。
3.javascript定义链表那里有点不熟练,null写成了None, 这是python代码写多了吗?然后就是读题,这个题是设计链表,题目已经明确规定了链表的定义,只需要严格按照这个题目的要求进行实现,比如哪些index是合法的,在index合法和index不超过size那里需要注意,不超过size是可以取到size的。边界条件比如while循环判断cur是否为空还是cur.next是否为空,一个是代入极端情况检验,一个是看之后的代码用了哪些,比如用了cur.next.val,那么cur.next就不能为空。
4.这个题用了一个小时左右,速度慢一是排斥做这种题干复杂的题,其实实现了一个函数就将一个函数折叠起来看起来就要好的多,然后是javascript定义ListNode和class语法还不熟悉,关于链表操作原理多理解其实已经不难了,多注意一下就行。
206.反转链表
1.不知道咋做,又一个反向指多感觉,但感觉实现起来比较复杂。
2.双指针正好可以反向指还可以移动,这个反转链表的操作可以拆解为多次反向指的操作,但要合理地连接起来。
3.双指针法实现起来比较简单,一遍过。
4.用了二十分钟左右,分析问题的能力和计算机模拟的思维能力是我觉得这道题比较难的地方。