LeetCode92-反转链表 II

今天下午就要CCF考试了

在考试前还是想发一篇文章

祝愿大家保佑我

哈哈哈哈哈哈哈哈

最近忙着这个

导致学习没有节奏了

搞完了正好可以好好看书了

嗯,加油!!!


92-反转链表 II

反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。

说明:
1 ≤ m ≤ n ≤ 链表长度。

示例:

输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL

思路:

关于链表的题目我之前说了挺多的,我最常用的套路就是:先将链表上节点的值保存至一数组中再做相应处理。本题亦是如此,步骤如下:

  1. 首先将head链表中各节点的值保存至head_list数组中
  2. 将head_list数组中[m-1:n]位置的数反转
  3. 最后将反转之后的head_list数组中元素赋值给新链表

代码如下:

class Solution(object):
    def reverseBetween(self, head, m, n):
        """
        :type head: ListNode
        :type m: int
        :type n: int
        :rtype: ListNode
        """
        head_copy = head
        head_list = []
        # 首先将head链表中各节点的值保存至head_list数组中
        while head_copy:
            head_list.append(head_copy.val)
            head_copy = head_copy.next
        # 直接将head_list数组中[m-1:n]位置的数反转
        head_list[m-1:n] = head_list[m-1:n][::-1]
        reverse_head = ListNode(0)
        reverse_head_copy = reverse_head
        # 最后将反转之后的head_list数组中元素赋值给新链表
        for head_num in head_list:
            reverse_head_copy.next = ListNode(head_num)
            reverse_head_copy = reverse_head_copy.next
        return reverse_head.next


if __name__ == "__main__":
    head_list = [1, 2, 3, 4]
    head = ListNode(0)
    head_copy = head
    for head_num in head_list:
        head_copy.next = ListNode(head_num)
        head_copy = head_copy.next
    m = 1
    n = 4
    reverse_head = Solution().reverseBetween(head.next, m, n)
    while reverse_head:
        print(reverse_head.val)
        reverse_head = reverse_head.next
    print(reverse_head)

执行效率一般,在50%左右。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习的学习者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值