leetcode-链表总结

版权声明:此文章为许诗宇所写,如需转载,请写下转载文章的地址 https://blog.csdn.net/xushiyu1996818/article/details/82109881

leetcode-237-删除链表中的节点(delete node in a linkedlist)-java
单向链表中,如果给定链表中的一个节点,不给这个之前的,想要影响之前的,只能把自己改变。
比如要删掉自己,只能把自己变成下一个

leetcode-19-删除链表的倒数第N个节点(remove nth node from end of list)-java
首先,如果要删除单链表的头结点,直接head=head.next
然后,如果一些本来需要两遍扫描但要求一遍的,可以考虑双指针算法,一个在前,一个在后,之后两个同时行动

leetcode-206-反转链表(reverse linked list)-java
反转链表 a 变为b
将a的每个head 变为b的head,每次再去掉a的head,即可
a 1 2 3 4 5
a的1 2 3 4 5 依次变为b的头,最后为 5 4 3 2 1(一个链表 头在最左,尾在最右,将a的头放在b的最左)

leetcode-234-回文链表(palindrome linked list)-java
如果要让链表首尾比较,可以先把前半部分翻转,再把前后比较
注意,如果要让空间o(c),时间o(n),记住翻转的方法

leetcode-141-环形链表(linked list cycle)-java
如果遇到链表是否循环,而且不要额外空间
可用双指针
1 快慢指针,一个走2,一个走1,遇到则循环
2 一个前一个后,将走过的指针的next改为head或者自己

猜你喜欢

转载自blog.csdn.net/xushiyu1996818/article/details/82109881
今日推荐