python实现反转链表讲解_25.leetcode题目讲解(Python):k个一组翻转链表

题目如下:

2742568dc18d

题目

这道题我的解法效率不是特别高,抛砖引玉,代码如下,我会找时间重新再写另外一个解法:

class Solution:

def reverseKGroup(self, head, k):

"""

:type head: ListNode

:type k: int

:rtype: ListNode

"""

if head is None or head.next is None or k == 1:

return head

temp = []

reverse_list = []

while head is not None:

temp.append(head.val)

head = head.next

if k == len(temp):

temp.reverse()

cur = ListNode(temp[0])

head = cur

cur = ListNode(temp[1])

head.next = cur

for j in range(2, len(temp)):

cur.next = ListNode(temp[j])

cur = cur.next

return head

i = 0

while i + k <= len(temp):

re_temp = temp[i:i + k]

re_temp.reverse()

for t in re_temp:

reverse_list.append(t)

i = i + k

for t in temp[i:]:

reverse_list.append(t)

cur = ListNode(reverse_list[0])

head = cur

cur = ListNode(reverse_list[1])

head.next = cur

for j in range(2, len(reverse_list)):

cur.next = ListNode(reverse_list[j])

cur = cur.next

return head

ps:如果您有好的建议,欢迎交流 :-D,

也欢迎访问我的个人博客 苔原带 (www.tundrazone.com)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值