leetcode hot100

21.合并两个有序链表

双指针秒了,注意判空

python 复制代码
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
        p=list1 #较小的
        q=list2
        if p==None:
            return q
        if q==None:
            return p
        if  q.val<p.val:
            p,q=q,p
        head=p
        r=p
        p=p.next
        while p!=None and q!=None:
            if p.val<q.val:
                r.next=p
                p=p.next
            else:
                r.next=q
                q=q.next
            r=r.next
        if p!=None:
            r.next=p
        if q!=None:
            r.next=q
        return head

2.两数相加

先把链表变成数字相加,再把数字变成链表

注意循环的退出条件,循环的变量,注意逻辑的正确性,别犯困

python 复制代码
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
        num=0
        p=l1
        q=l2
        cnt=1
        while p!=None:
           num+=p.val*cnt
           cnt*=10
           p=p.next
        cnt=1
        while q!=None:
            num+=q.val*cnt
            cnt*=10
            q=q.next
        
        remainder=num%10
        num//=10
        r=ListNode(remainder,None)
        l=r
        while num!=0:
            remainder=num%10
            s=ListNode(remainder,None)
            r.next=s
            r=s
            num=num//10
        return l

19. 删除链表的倒数第 N 个结点

我是拿个数组存了,不然得遍历两次链表,不过这样占用空间会比较多...

python 复制代码
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
        node=[]
        p=head
        while p!=None:
            node.append(p)
            p=p.next
        length=len(node)
        trageti=length-n
        if trageti==0:#删除第一个节点
            head=node[trageti].next
        else:
            node[trageti-1].next=node[trageti].next
        return head
相关推荐
信誓旦旦的程序猿6 小时前
【Python量化实战宝典 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(Python 可跑)
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
砚底藏山河6 小时前
python量化:行情数据回溯
java·开发语言·python·金融·maven
今年下半年6 小时前
AI智能体项目实战记录(02):初始化 Python 项目
开发语言·人工智能·python·fastapi
Williamtym6 小时前
PickGo Lab实践:用浏览器、Python和MCP串起机器人搬运仿真
开发语言·python·机器人
HPtiger6 小时前
数据结构——选择排序
数据结构·算法·排序算法
康实训6 小时前
老年评估仿真实训平台架构设计与老年人能力评估实训室教学落地实践
大数据·人工智能·算法·实训室·实训室建设
DongQiShanRen7 小时前
六根硬件映射(四):归属澄清、两处不一致与卷十一总表
开发语言·人工智能·算法·rust·哈希算法·集成学习
CS创新实验室7 小时前
Python 对象“死“了之后去了哪?——引用计数与分代垃圾回收
开发语言·jvm·python
CCblandy7 小时前
雪花 ID 四个边界实测:时钟回拨重号 500 个,前端 JSON.parse 直接丢精度
后端·python·算法·性能优化·架构
quantdash_cc7 小时前
Pandas 处理分钟级股票行情:从原始数据清洗到 K 线聚合
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash