zoukankan      html  css  js  c++  java
  • 链表_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








  • 相关阅读:
    excel转换为dta格式
    移动pdf
    豆瓣爬虫
    python给证件照换底色
    OS模块
    决策树参数
    Pandas数据连接
    Sklearn用法
    numpy.loadtxt()用法
    单片机基础(五):定时/计数器的工作原理及工作方式
  • 原文地址:https://www.cnblogs.com/lux-ace/p/10557188.html
Copyright © 2011-2022 走看看