• 链表_leetcode92


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

    class Solution(object):
    def reverseBetween(self, head, m, n):
    """
    :type head: ListNode
    :type m: int
    :type n: int
    :rtype: ListNode
    """

    if not head or not head.next:
    return head
    if n < 1 or m >= n :
    return head

    cout = 1
    cur = head



    # 还是边界条件没考虑完全呀,比如翻转整个链表

    preStart = None
    nextEnd = None

    while cur:

    cur = cur.next

    cout += 1

    if cout == m-1:
    preStart = cur
    if cout == n:
    nextEnd = cur.next

    break


    start = preStart.next

    begin = start.next

    for i in range(m-n):

    nextBegin = begin.next
    begin.next = preStart.next
    preStart.next = begin
    begin = nextBegin

    start.next = nextEnd

    return head



    class Solution2(object):
    def reverseBetween(self, head, m, n):
    """
    :type head: ListNode
    :type m: int
    :type n: int
    :rtype: ListNode
    """

    count = 1
    root = ListNode(0)
    root.next = head

    pre = root

    # while pre.next:
    #
    # pre = pre.next
    # count += 1
    #
    # if count == m :
    # break

    while pre.next and count < m :
    pre = pre.next
    count += 1

    if not pre:
    return head


    mNode = pre.next
    cur = mNode.next

    while cur and count < n:

    next = cur.next
    cur.next = pre.next
    pre.next = cur
    mNode.next = next

    cur = next
    count += 1



    return root.next








  • 相关阅读:
    day 011总结
    day 010 总结
    day 10作业
    day 009总结
    day 008总结
    wireshark 解密tls消息
    js基础 数组slice
    js基础 数组splice
    js基础 Array.from
    js基础 Array.of
  • 原文地址:https://www.cnblogs.com/lux-ace/p/10557188.html
Copyright © 2020-2023  润新知