前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >链表调试示例 -24.两两交换链表中的节点(中等)

链表调试示例 -24.两两交换链表中的节点(中等)

作者头像
我是胖虎啊
发布2022-06-27 18:03:38
2580
发布2022-06-27 18:03:38
举报
文章被收录于专栏:测试开发卷货

24. 两两交换链表中的节点(中等)

题目链接

https://leetcode-cn.com/problems/swap-nodes-in-pairs/

解题思路

  • 定义一个虚拟的头结点, 辅助遍历
  • 判断当前结点的next结点和next.next结点是否为空, 不为空则互相交换, 为空时, 则输出 虚拟结点.next 即为所求!

题解代码

代码语言:javascript
复制
class Solution:
    def swapPairs(self, head: ListNode) -> ListNode:
        dummy = ListNode()
        dummy.next = head
        dummy_tmp = dummy
        while dummy_tmp.next and dummy_tmp.next.next:
            node1 = dummy_tmp.next
            node2 = dummy_tmp.next.next
            dummy_tmp.next = node2
            node1.next = node2.next
            node2.next = node1

            dummy_tmp = node1
        return dummy.next

调试技巧

完整的调试代码

代码语言:javascript
复制
from leetcode.linked_struct import ListNode
from leetcode.linked_struct import SingleLinkList

link_list = SingleLinkList()

node1 = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(3)
node4 = ListNode(4)

link_list.head = node1
node1.next = node2
node2.next = node3
node3.next = node4

class Solution:
    def swapPairs(self, head: ListNode) -> ListNode:
        dummy = ListNode()
        dummy.next = head
        dummy_tmp = dummy
        while dummy_tmp.next and dummy_tmp.next.next:
            node1 = dummy_tmp.next
            node2 = dummy_tmp.next.next
            dummy_tmp.next = node2
            node1.next = node2.next
            node2.next = node1

            dummy_tmp = node1
        return dummy.next


if __name__ == '__main__':
    link_list.view_linklist()
    a = Solution()
    link_list.head = a.swapPairs(link_list.head)
    link_list.view_linklist()

断点位置 + debug截图

  • step 1

Tips: 关于Pycharm的调试技巧, 可以参考我的另一篇文章 PyCharm常用功能 - 断点调试 如图所示, 我们自定义的链表结点(当前结点的值 + next结点的信息)都会在工作台显示出来, 是不是更直观的了解链表了些!

  • step 2

上面是经历过一次while循环后的变量信息打印.由左边框的部分可见, 一轮循环后, value=1 和 value=2 的前2个结点已经交换完毕了

同时可以用id(dummy), id(head)这种方式查看某一个结点的地址信息(以后做链表题可能会用到)

  • step 3

这是直接运行的结果, 操作是:

  1. 先打印一下原始链表
  2. 调一次交换结点的方法
  3. 打印一下当前的链表

结果可以显示 操作前 and 操作后 的链表情况

以上就是 Leetcode链表题 结合 自定义链表结构 的 调试案例, 你学会了吗?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发卷货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 24. 两两交换链表中的节点(中等)
    • 题目链接
      • 解题思路
        • 题解代码
          • 调试技巧
            • 完整的调试代码
            • 断点位置 + debug截图
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档