题目描述:在 O(1) 时间内删除链表节点

i c } m l p a o s r s f } t u F n F o c o r v i } i } } } r u 1 d a f f e e n 3 e r l e t d S l p p s l u a o e p r D p p e p s l w } p p r t l t = e e / D D / e / e h ? n i u e = = t l e e i = t i . = o t N u e l l f { l n p n i o h n r t e e n s e p e s o d e i n e t t p i x n e a l d e e l = p = t ( d p ? d d = ? { _ . ? ? = p . p = n . . = , n ? h e v n e . n e p x a e p x n i a D t l x D t e l d e t e x : l ! = l ! t e = = e = L t ( t = i e n p p e s d i D D d p t l e e D N = l l { e o = { e e l d t t e e n e e t ? i d d e , l ? ? d _ . . { n n { p e e D x x e t t l ? ? e . . t v n e a e d l x : ) t ! L i s t N o d e ? ) L i s t N o d e ? {

算法思想:① 如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复杂度为 O(1)。 ② 否则,就需要先遍历链表,找到节点的前一个节点,然后让前一个节点指向 null,时间复杂度为 O(N)。

github地址:https://github.com/cubegao/LeetCode