加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

力扣——Reverse Nodes in k-Group(K 个一组翻转链表) python

发布时间:2020-12-20 10:20:46 所属栏目:Python 来源:网络整理
导读:题目描述: 中文: 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 示例 : 给定这个链表:1-2-3-4-5 当 k = 2 时,应当

题目描述:

中文:

给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。

k 是一个正整数,它的值小于或等于链表的长度。

如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。

示例 :

给定这个链表:1->2->3->4->5

当 k = 2 时,应当返回: 2->1->4->3->5

当 k = 3 时,应当返回: 3->2->1->4->5

说明 :

你的算法只能使用常数的额外空间。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

?

英文:

Given a linked list,reverse the nodes of a linked list k at a time and return its modified list.

k is a positive integer and is less than or equal to the length of the linked list. If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is.

Example:

Given this linked list: 1->2->3->4->5

For k = 2,you should return: 2->1->4->3->5

For k = 3,you should return: 3->2->1->4->5

Note:

Only constant extra memory is allowed.
You may not alter the values in the list‘s nodes,only nodes itself may be changed.

?

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self,x):
#         self.val = x
#         self.next = None

class Solution(object):
    def reverseKGroup(self,head,k):
        """
        :type head: ListNode
        :type k: int
        :rtype: ListNode
        """
        pre = ListNode(-1)
        tail = pre
        
        q = head
        while q is not None:
            #向后查找k个节点
            n = k
            p = q
            while p is not None and n > 0:
                p = p.next
                n -= 1
                
            #如果在查找k个节点的过程中遇到None,则说明
            #后面的节点不够k个节点则直接跳出即可
            if n > 0:
                tail.next = q
                break
            
            #将这K个节点以头插法插入
            end = q
            while q != p:
                t = q.next
                q.next = tail.next
                tail.next = q
                q = t
            tail = end
        return pre.next

?

?

题目来源:力扣

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读