[Leetcode]Python3(数组与链表)

1.数组:

在这里插入图片描述
在这里插入图片描述
数组的时间复杂度:
在这里插入图片描述

2.链表

在这里插入图片描述
在这里插入图片描述
插入:
在这里插入图片描述
删除:
在这里插入图片描述
链表插入与删除速度比数组快,但是查询比数组慢。数据结构没有最好,只有最适合。
双链表:
在这里插入图片描述
链表的时间复杂度:
在这里插入图片描述

3.Leetcode 代码实战

在这里插入图片描述

3.1 Reverse Linked List](反转链表)

206. Reverse Linked List
在这里插入图片描述
leetcode代码:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def reverseList(self, head) :
        cur, prev = head, None
        while cur:
            cur.next, prev, cur = prev, cur, cur.next
        return prev      

在这里插入图片描述
在这里插入图片描述
jupyter代码:

# 实现一个链表类,只有一个值val和一个指向下一个节点的next'指针'
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None
        
#核心代码
class Solution:
    def reverseList(self, head) :
        cur, prev = head, None
        while cur:
            nex = cur.next 
            cur.next = prev
            prev = cur
            cur = nex

#           cur.next, prev, cur = prev, cur, cur.next
        return prev
     
#测试用例,构造 1->2->3->4 链表,返回 4->3->2->1
if __name__ == '__main__':
    a = ListNode(1)
    b = ListNode(2)
    c = ListNode(3)
    d = ListNode(4)
    a.next = b
    b.next = c
    c.next = d
    c1 = Solution()
    l = c1.reverseList(a)
    while l.next:
        print(l.val,end =' ')
        l = l.next
    print(l.val)
#   print([l.val, l.next.val,l.next.next.val, l.next.next.next.val])

结果:
在这里插入图片描述
jupyter代码原理:
在这里插入图片描述
leetcode代码原理:
在这里插入图片描述

3.2 Swap Nodes in Pairs(两两反转)

24. Swap Nodes in Pairs
在这里插入图片描述

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def swapPairs(self, head) :
        pre ,pre.next = self, head
        while pre.next and pre.next.next:
            a = pre.next
            b = a.next
            pre.next, b.next, a.next = b, a, b.next
            pre = a
        print(self.next.val,self.next.next.val)
        return self.next

结果:
在这里插入图片描述
原理:在这里插入图片描述

3.3 linked-list-cycle(探测链表环)

141. Linked List Cycle
在这里插入图片描述

在这里插入图片描述

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def hasCycle(self, head):
        """
        :type head: ListNode
        :rtype: bool
        """
        fast=slow=head
        while fast and slow and fast.next:
            fast = fast.next.next
            slow = slow.next
            if fast == slow:
                return True
        return False

结果:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值