链表

一,逆序链表

1,逆序链表

P206 easy

class Solution(object):
    def reverseList(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        new = None
        while head:
            # 保存当前节点指向的下一个值
            temp = head.next 
            # 当前节点指针指向前面的节点
            head.next = new
            # 前一个节点往后移到当前节点
            new = head
            # 当前节点往后移到下一个节点
            head = temp
        return new

2,反向指定链表

P92 medium
思路:
定义result=head,然后找到左节点的前驱和左节点,右节点的后继和右节点。然后反转左到右,再将前驱和后继的指针指向对应方向。最后输出result

class Solution(object):
    def reverseBetween(self, head, left, right):
        """
        :type head: ListNode
        :type left: int
        :type right: int
        :rtype: ListNode
        """
        # 定义左前驱节点
        pre_node = None
        计算步长
        change_len = right-left+1
        # 最后输出的链表
        result = head
        # 遍历链表直到左前驱节点,并赋值给pre_node
        for _ in range(left-1):
            pre_node = head
            head = head.next
        # 定义右节点mode_node
        mode_node = head
        next_node = None
        # 反转链表
        for _ in range(change_len):
            temp = head.next
            head.next = next_node
            next_node = head
            head = temp
        # 反转后右节点的指针指向当前节点
        mode_node.next = head
        # 判断不是从第一个节点逆序的
        if pre_node:
            pre_node.next = next_node
        # 为空说明从第一个开始逆序,结果即逆置后的节点
        else:
            result = next_node
        return result

二,环形链表

1,判断是否环形链表

P141 easy
思路:
设置一个set集合,存储遍历过的head,若在set里有,则是环形

class Solution(object):
    def hasCycle(self, head):
        """
        :type head: ListNode
        :rtype: bool
        """

2,输出环形链表位置

P142 medium
思路:
使用快慢指针,找出快慢指针的相遇的位置,然后从初始节点和相遇位置一起往前走,走到相遇的位置就是环形的位置:

三,相交链表

1,找出两个链表相交的节点值

P160 easy
思路:
先计算出两个链表的长度,再减去长的那块,再遍历两个链表,相等的地方即交点

四,排序

1,两个链表在指定数字下合成一个有序链表

P86 medium
思路:
通过临时链表,less和more,遍历head,小于指定数字的连接到less链表上,大于的放到more链表。最后将less链表和more链表连接起来,输出

2,合并有序链表

P21 easy
思路:
同上,存到临时链表中

posted @ 2021-03-13 17:12  狂想曲°  阅读(29)  评论(0)    收藏  举报