1. 程式人生 > 其它 >NC21 連結串列內指定區間反轉

NC21 連結串列內指定區間反轉

描述

將一個節點數為 size 連結串列 m位置到n 位置之間的區間反轉,要求時間複雜度O(n)O(n),空間複雜度O(1)O(1)。
例如:
給出的連結串列為1\to 2 \to 3 \to 4 \to 5 \to NULL12345NULL,m=2,n=4m=2,n=4,
返回1\to 4\to 3\to 2\to 5\to NULL14325NULL.

資料範圍:連結串列長度0 < size \le 10000<size1000,0 < m \le n \le size0<mnsize,連結串列中每個節點的值滿足|val| \le 1000val1000 要求:時間複雜度O(n)O(n),空間複雜度O(n)O(n)
進階:時間複雜度O(n)O(n),空間複雜度O(1)O(1)

示例1

輸入:
{1,2,3,4,5},2,4
返回值:
{1,4,3,2,5}

示例2

輸入:
{5},1,1
返回值:
{5}
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 程式碼中的類名、方法名、引數名已經指定,請勿修改,直接返回方法規定的值即可
#
# 
# @param head ListNode類 
# @param m int整型 
# @param n int整型 # @return ListNode類 # class Solution: def reverseBetween(self , head: ListNode, m: int, n: int) -> ListNode: # write code here p=head N=0 L_lst=[] #利用佇列計數 while p: N+=1 L_lst.append(p) p=p.next
if N<=1:return head if m==n:return head L1=L_lst[:m-1] if m>1 else None L2=L_lst[m-1:n] L3=L_lst[n:] if N>n else None for i in range(len(L2)-1): node=L2[-i-1] node.next=L2[-i-2] if L3 is not None: L2[0].next=L3[0] else: L2[0].next=None if L1 is not None: L1[-1].next=L2[-1] return L1[0] else: return L2[-1]
處理演算法通用的輔助的code,如讀取txt檔案,讀取xml檔案,將xml檔案轉換成txt檔案,讀取json檔案等