We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reverse a singly linked list.
Example:
Input: 1->2->3->4->5->NULL Output: 5->4->3->2->1->NULL
Follow up: A linked list can be reversed either iteratively or recursively. Could you implement both?
这是一道非常基础的链表题目——链表反转。 我起初一开始的就两种解法,都是迭代(iteratively)法:
// 三指针法 class Solution { public ListNode reverseList(ListNode head) { ListNode node = head; ListNode pre = null, next = null; while (node != null) { next = node.next; node.next = pre; pre = node; node = next; } return pre; } }
// 头插法 class Solution { public ListNode reverseList(ListNode head) { if (head == null || head.next == null) return head; ListNode headPro = new ListNode(0); headPro.next = head; ListNode pre = head, node = head.next, next = null; while (node != null) { next = node.next; node.next = headPro.next; headPro.next = node; pre.next = next; node = next; } return headPro.next; } }
还有递归(recursively)法。 其主要思想是递归到倒数第二个节点,将倒数第一个节点指向倒数第二个节点,后者指向空,返回倒数第一个节点。以此回溯,倒数第三个节点会指向空,同时一个反转的子链表末尾是倒数第三个节点。总结来说,就是返回的是末尾节点,其余节点的逻辑是让它的下一个节点指向它,它本身指向null。应用了回溯的思想。
class Solution { public ListNode reverseList(ListNode head) { if (head == null || head.next == null) return head; ListNode newHead = reverseList(head.next); head.next.next = head; head.next = null; return newHead; } }
参考资料:
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Reverse a singly linked list.
Example:
Follow up:
A linked list can be reversed either iteratively or recursively. Could you implement both?
这是一道非常基础的链表题目——链表反转。
我起初一开始的就两种解法,都是迭代(iteratively)法:
还有递归(recursively)法。
其主要思想是递归到倒数第二个节点,将倒数第一个节点指向倒数第二个节点,后者指向空,返回倒数第一个节点。以此回溯,倒数第三个节点会指向空,同时一个反转的子链表末尾是倒数第三个节点。总结来说,就是返回的是末尾节点,其余节点的逻辑是让它的下一个节点指向它,它本身指向null。应用了回溯的思想。
参考资料:
The text was updated successfully, but these errors were encountered: