力扣刷题记录1

在师兄的建议下终于开始刷力扣题库了,对于我这样的小白来说果然不简单。趁此机会,利用博客记录刷题过程心得,过段时间回头来看一定有别样感触。

链表知识

210604&210605,连续两天的简单题都是链表相关。虽然是简单题,我却并未能重拳出击,还是知识理解薄弱。

210604 160 相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。
210605 203 移除链表元素
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回新的头节点

力扣对于链表形式定义

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

链表的定义

链表是以节点(node)存储的链式存储结构,一个node包含一个data域也即力扣中的node.val(存放数据),和一个next域即node.next(存放下一个node的指针),链表的各个节点不一定是连续的,它可以分为带头结点和不带头结点。头结点仅包含next域。

参考链接:看了这篇文章,就别再问我链表了!
看完一把子理解链表

个人题解

第160题

放上学习后个人关于第160题的解答:

class Solution:
    def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
        a,b = headA,headB
        while a != b:
            a = a.next if a else headB
            b = b.next if b else headA
        return a

第203题

关于第203题的迭代解法,关键在于添加 哑结点 dummyHead:

class Solution:
    def removeElements(self, head: ListNode, val: int) -> ListNode:
        # Definition for singly-linked list.
        class ListNode:
            def __init__(self, val=0, next=None):
                self.val = val
                self.next = next
        
        dummyHead = ListNode(0)
        dummyHead.next = head
        a = dummyHead 
        while a.next != None:
            if a.next.val == val:
                a.next =  a.next.next
            else:
                a = a.next
        return dummyHead.next
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值