日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

python 奇偶链表

發(fā)布時(shí)間:2025/3/21 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 奇偶链表 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

|奇偶鏈表

給定一個(gè)單鏈表,把所有的奇數(shù)節(jié)點(diǎn)和偶數(shù)節(jié)點(diǎn)分別排在一起。請(qǐng)注意,這里的奇數(shù)節(jié)點(diǎn)和偶數(shù)節(jié)點(diǎn)指的是節(jié)點(diǎn)編號(hào)的奇偶性,而不是節(jié)點(diǎn)的值的奇偶性。

請(qǐng)嘗試使用原地算法完成。你的算法的空間復(fù)雜度應(yīng)為 O(1),時(shí)間復(fù)雜度應(yīng)為 O(nodes),nodes 為節(jié)點(diǎn)總數(shù)。

示例 1:

輸入: 1->2->3->4->5->NULL
輸出: 1->3->5->2->4->NULL
示例 2:

輸入: 2->1->3->5->6->4->7->NULL
輸出: 2->3->6->7->1->5->4->NULL

|題解

# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution:"""解題思路:1.通過count記錄節(jié)點(diǎn)位置,按奇偶劃分2.分別創(chuàng)建 奇數(shù)頭指針 和 偶數(shù)頭指針3.把對(duì)應(yīng)位置的數(shù)據(jù)用頭指針串聯(lián)起來4.奇數(shù)鏈表和偶數(shù)鏈表拼接 """def oddEvenList(self, head: ListNode) -> ListNode:cur = headcount = 1 # 記錄當(dāng)前節(jié)點(diǎn)的位置# even_head 作為偶數(shù)鏈表的頭指針 even_head = Noneeven_tail = None# 引入偶數(shù)鏈表的虛擬頭節(jié)點(diǎn),目的是使下面的處理邏輯保持一致node = ListNode()even_head = nodeeven_tail = even_head# odd_head 作為奇數(shù)鏈表的頭指針odd_head = Noneodd_tail = None# 引入奇數(shù)鏈表的虛擬頭節(jié)點(diǎn),目的是使下面的處理邏輯保持一致node = ListNode()odd_head = nodeodd_tail = odd_headwhile cur:per = cur.next# count跟2求余,如果余數(shù)為0,則當(dāng)前節(jié)點(diǎn)為偶數(shù)節(jié)點(diǎn),否則為奇數(shù)節(jié)點(diǎn)cur.next = None # 賦值為None的目的是 只區(qū)當(dāng)前節(jié)點(diǎn),截?cái)嗪竺娴墓?jié)點(diǎn),如果不截?cái)鄷?huì)出現(xiàn)最后一個(gè)節(jié)點(diǎn),即在奇數(shù)鏈表,又在偶數(shù)鏈表if count % 2 == 0:even_tail.next = cureven_tail = curelse:odd_tail.next = curodd_tail = curcount += 1cur = perodd_tail.next = even_head.nextreturn odd_head.next

總結(jié)

以上是生活随笔為你收集整理的python 奇偶链表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。