码迷,mamicode.com
首页 > 编程语言 > 详细

Leetcode练习(Python):链表类:第143题:重排链表:给定一个单链表 L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

时间:2020-05-03 12:37:31      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:dex   思路   mys   python   node   需要   不能   ret   ota   

题目:
重排链表:给定一个单链表 L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…  你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 
思路:
使用了懒人做法,使用了栈,应该还有更好的方法,想到后做补充。
程序:
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reorderList(self, head: ListNode) -> None:
        """
        Do not return anything, modify head in-place instead.
        """
        if not head:
            return None
        myStack = []
        index1 = head
        counter = 0
        while index1:
            myStack.append(index1)
            index1 = index1.next
            counter += 1
        num_rotate = counter // 2
        index2 = head
        while num_rotate:
            tmp_node = myStack.pop()
            tmp_node.next = index2.next
            index2.next = tmp_node
            index2 = tmp_node.next
            num_rotate -= 1
        index2.next = None

Leetcode练习(Python):链表类:第143题:重排链表:给定一个单链表 L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

标签:dex   思路   mys   python   node   需要   不能   ret   ota   

原文地址:https://www.cnblogs.com/zhuozige/p/12821153.html

(1)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!