35. Leetcode 328. 奇偶链表 (链表-双指针)
生活随笔
收集整理的這篇文章主要介紹了
35. Leetcode 328. 奇偶链表 (链表-双指针)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定單鏈表的頭節點?head?,將所有索引為奇數的節點和索引為偶數的節點分別組合在一起,然后返回重新排序的列表。第一個節點的索引被認為是 奇數 , 第二個節點的索引為?偶數 ,以此類推。請注意,偶數組和奇數組內部的相對順序應該與輸入時保持一致。你必須在?O(1)?的額外空間復雜度和?O(n)?的時間復雜度下解決這個問題。示例 1:輸入: head = [1,2,3,4,5]
輸出:?[1,3,5,2,4]示例 2:輸入: head = [2,1,3,5,6,4,7]
輸出: [2,3,6,7,1,5,4]思路:給了我們一個鏈表,讓我們分開奇偶節點,所有奇節點在前,偶節點在后。
設定兩個虛擬節點,dummyHead1 用來保存奇節點,dummyHead2 來保存偶節點; 遍歷整個原始鏈表,將奇節點放于dummyHead1 中,其余的放置在dummyHead2 中 遍歷結束后,將dummyHead2 插入到dummyHead1 后面。# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:def oddEvenList(self, head: ListNode) -> ListNode:odd = dummpy1 = ListNode(0)even = dummpy2 = ListNode(0)while head:odd.next = headodd = odd.nexthead = head.nextif head:even.next = headeven = even.nexthead = head.nexteven.next = Noneodd.next = dummpy2.nextreturn dummpy1.next
總結
以上是生活随笔為你收集整理的35. Leetcode 328. 奇偶链表 (链表-双指针)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 34. Leetcode 234. 回文
- 下一篇: 37. Leetcode 100. 相同