leetcode 反转链表 206 &92
1. 206题对有序链表进行反转,如1->2->3,结果为3->2->11.1 方法一初始化pre为None,cur为head,对于1->2进行反转,就是将1的next指向pre,同理,2->3也是,代码如下# python# Definition for singly-linked list.# class ListNode:#def __init__(sel
·
1. 206题
对有序链表进行反转,如1->2->3,结果为3->2->1
1.1 方法一
初始化pre为None,cur为head,对于1->2进行反转,就是将1的next指向pre,同理,2->3也是,代码如下
# python
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
pre = None
cur = head
while cur:
nex = cur.next
cur.next = pre
pre = cur
cur = nex
return pre
// java
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
ListNode pre = null;
ListNode cur = head;
while (cur != null){
ListNode nex = cur.next;
cur.next = pre;
pre = cur;
cur = nex;
}
return pre;
}
}
1.2 方法二:递归
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
if head == None or head.next == None:
return head
rhead = reverseList(head.next)
head.next.next = head
head.next = None
return rhead
// java
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
// 递归终止条件
if(head == null|| head.next == null)
return head;
ListNode rhead = reverseList(head.next);
// head->next此刻指向head后面的链表的尾节点
// head->next->next = head把head节点放在了尾部
head.next.next = head;
head.next = null;
return rhead;
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)