链表 part1
题目:203 707 206
前提:链表有难度
习惯收获:1、适当看好的解题思路
2、清晰思维过程,可通过 图(甚至是彩图,例如这题用 黑色表示原链表next,蓝色表示新链表next),或者伪代码
3、虽然以前写过,但不要依靠模糊的印象,容易似是而非,模糊细节,蒙对的情况却误以为思路清晰
707
先写的707,因为对链表的实现掌握的还不够。
收获:发现确实不够,链表的实现还不够熟练,当初数据结构与算法是C++写的,用python 有点陌生,python没有指针,关于引用和复制有点区分不开,得回去学学! 树也可能遇类似问题!
收获:知识点上:头指针为空,按707算,正式节点从头指针的指向的节点开始算且索引为0。(leetcode 有 listnode 和 yummy,但有点模式,自己写node快乐一点,类似的还有树)
注:对着人家题解写的,有空再二刷
203
在kimi的辅助下对了~
帮助了两点:1、本人读题不清楚,题目的head指向的是第一个元素,并不是空节点,需要自己加一个 节点(如 dummy = Listnode(0)(不是0也可以是其他数) dummy.next = head)
2、注意 在删完节点之后 current_node 应变为 current_node.next ( 注意:1、若 current_node.next = None,代码并不会报错, 判断语句 if curent.next : 判断为假;2、current_node 和 current_node.next 都是节点的内存地址,直接 赋值= 不会有歧义,也不会出现 val 赋给了内存地址的问题 ,707的问题得到了一定的解答)
206
自己思路一开始在递归,但没递归明白,想迭代,没明白,看了一个 uu的图解,悟了:
然后迭代的跳出条件想了很久
(注意,我对迭代和循环已经有了区别的意识,hhh,迭代一定是通过循环的方式去迭代的,有明确数量的迭代 可以用for,也小可能用while,不明确数量的用while)
递归的方法还没想好,明天再补上~