当前位置: 首页 > news >正文

【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表

《博主简介》

小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。
更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~
👍感谢小伙伴们点赞、关注!

快慢指针

移动零

class Solution:

    def moveZeroes(self, nums: List[int]) -> None:

        """

        Do not return anything, modify nums in-place instead.

        """

        left = 0

        n = len(nums)

        for i in range(n):

            if nums[i] != 0:

                nums[left],nums[i] = nums[i],nums[left]

                left += 1

        return nums

class Solution:

    def moveZeroes(self, nums: List[int]) -> None:

        """

        Do not return anything, modify nums in-place instead.

        """

        j = 0

        for i in range(len(nums)):

            if nums[i] != 0:

                nums[j] = nums[i]

                if i != j:

                    nums[i] = 0

                j += 1

        return nums

链表

两两交换链表中的节点

# 迭代

class Solution:

    def swapPairs(self, head: ListNode) -> ListNode:

        # 通过迭代实现

        dummy = ListNode(-1)

        dummy.next = head

        prev_node = dummy

        while head and head.next:

            first_node = head

            second_node = head.next

            # 交换节点

            prev_node.next = second_node

            first_node.next = second_node.next

            second_node.next = first_node

            # 初始化头节点与prev_node

            prev_node = first_node

            head = first_node.next

        return dummy.next

# 递归

class Solution:

    def swapPairs(self, head: ListNode) -> ListNode:

        # 递归实现

        if not head or not head.next:

            return head

        first_node = head

        second_node = head.next

        # 第二个节点的next节点作为头部传入递归函数,返回的是

        # 指向第二个节点的指针

        first_node.next = self.swapPairs(second_node.next)

        second_node.next = first_node

        return second_node

反转链表

将链表进行反转

# 迭代

class Solution:

    def reverseList(self, head: ListNode) -> ListNode:

        if head is None:

            return head

        pre = None

        cur = head

        while cur:

            nxt = cur.next

            cur.next = pre

            pre = cur

            cur = nxt

        return pre

# 递归

class Solution:

    def reverseList(self, head: ListNode) -> ListNode:

        if not head or not head.next:

            return head

        last = self.reverseList(head.next)

        head.next.next = head

        head.next = None

        return last

关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

觉得不错的小伙伴,感谢点赞、关注加收藏哦!

欢迎关注下方GZH:阿旭算法与机器学习,共同学习交流~

http://www.lryc.cn/news/264381.html

相关文章:

  • springboot解决XSS存储型漏洞
  • I.MX6ULL_Linux_驱动篇(47)linux RTC驱动
  • 详解IBM企业架构框架模型CBM
  • 宝塔面板安装MySQL数据库并通过内网穿透工具实现公网远程访问
  • Elasticsearch 性能调优基础知识
  • 速盾网络:网络安全守护者
  • jmeter如何参数化?Jmeter参数化设置的5种方法
  • 01AVue入门(持续学习中)
  • js 深浅拷贝的区别和实现方法
  • 【jvm从入门到实战】(九) 垃圾回收(2)-垃圾回收器
  • C#基础——匿名函数和参数不固定的函数
  • PCL 点云匹配 4 之 (非线性迭代点云匹配)lM-ICP
  • MySQL_14.数据库高速缓冲区空间管理
  • leetcode 974. 和可被 K 整除的子数组(优质解法)
  • 【技术】MySQL 日期时间操作
  • 测试理论知识三:测试用例、测试策略
  • 【clickhouse】在CentOS中离线安装clickhouse
  • 微信商户号申请0.2费率
  • 基于单片机设计的电子指南针(LSM303DLH模块(三轴磁场 + 三轴加速度)
  • 深度学习 该用什么标准判断差异最小
  • 汽车制造厂设备故障预测与健康管理PHM
  • 如何通过宝塔面板搭建一个MySQL数据库服务并实现无公网ip远程访问?
  • C++ Qt开发:TabWidget实现多窗体功能
  • 【轻量化篇】YOLOv8改进实战 | 更换主干网络 Backbone 之 RepGhostnet,重参数化实现硬件高效的Ghost模块
  • 【STM32工具篇】使用CLion开发STM32
  • elementui中的el-table,当使用fixed属性时,table主体会遮挡住滚动条的大半部分,导致很难选中。
  • 鸿蒙端H5容器化建设——JSB通信机制建设
  • 数据管理平台Splunk Enterprise本地部署结合内网穿透实现远程访问
  • MaBatis使用`ResultMap`标签手动映射详解使用
  • openstack-keystone服务