算法-链表
小细节
初始化问题
我们这样子new一个ListNode
它里面的默认值是0,所以我们不能这样
如果我们为空,我们要返回null
节点结束条件判断(多创建节点问题)
参考示例3217
解析:
我的答案是多了一个无用节点
这是因为我每次都是在当前节点添加,然后直接创建下一个新节点
例如下面的
那你怎么能保证我下一个节点一定会用到呢?如果用不到的话他默认值为0,那我们要收集的答案不久多了一个无用节点?
所以我现在就换个思路
我们一般来说是有个头节点的对吧?
两种头节点
无值头节点:result.next才是我们真正的结果,也就是result这个节点是不存值的,我们的答案是result.next,下一开始才是我们的正式答案
有值头节点:result就是我们的真正结果,一开始就存了值
我后面就用第一种节点的方式了
也就是我们符合了要加入节点的条件,我们才创建节点
我们用创建一个新的节点,也就是.next,用这个下一个节点来装填我们的新的元素,这样子就不会多创建一个无用节点了
遍历链表
1290二进制链表转整数
每往右遍历一位,我们的结果就多×2
2180合并零之间的节点
817链表组件
删除节点
203移除链表元素
3217移除数组中存在的节点
83删除排序链表中重复的元素
82删除排序链表中重复的元素2
237删除链表中的节点
不能操作头节点
我们只能操作准备被删除的那个节点
所以我们直接简洁地跳过这个节点就好了