每日一题20201113(328. 奇偶链表)

简介: 奇偶链表方法

题目: 328. 奇偶链表


13.jpg

image-20201113175101832

思路


定义3个指针,分别为jishu(指向第一个节点), oushu(第一个偶数节点)和oushu_head(第一个偶数节点)
# 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:
        if head is None:
            return head
        # 指向第一个奇数节点
        jishu = head
        # 指向第一个偶数节点
        oushu_head = oushu = head.next
        # 当偶数节点不存在或者偶数节点后面没有节点时循环结束
        while oushu is not None and oushu.next is not None:
            # 把偶数的下一个节点(奇数节点)给jishu
            jishu.next = oushu.next
            # jishu奇数指针指向刚才赋予的奇数节点(这样jishu指向第二个奇数节点) 
            jishu = jishu.next
            # 把奇数的下一个节点(偶数节点)指向给偶数
            oushu.next = jishu.next
            # 把偶数节点往后挪一位 此时oushu: 2->4
            oushu = oushu.next
        # 把oushu_head接入jishu的后面节点(这里其实jishu节点已经到最后一个奇数了)
        jishu.next = oushu_head
        # 返回修改后的head即可
        return head

14.jpg

image-20201113214140509




相关文章
|
算法 索引
【Leetcode -328.奇偶链表 - 725.分隔链表】
【Leetcode -328.奇偶链表 - 725.分隔链表】
36 0
|
3月前
|
索引 Python
【Leetcode刷题Python】328. 奇偶链表
在不使用额外空间的情况下,将链表中的奇数和偶数索引节点重新排序的方法,并提供了相应的Python实现代码。
35 0
|
6月前
|
索引
每日一题:力扣328. 奇偶链表
每日一题:力扣328. 奇偶链表
43 4
(牛客网)链表的奇偶重排
给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。 注意是节点的编号而非节点的数值。
72 0
|
6月前
|
Java Go C++
Golang每日一练(leetDay0113) 奇偶链表、链表随机节点
Golang每日一练(leetDay0113) 奇偶链表、链表随机节点
58 0
Golang每日一练(leetDay0113) 奇偶链表、链表随机节点
|
6月前
|
算法 程序员
【算法训练-链表 七】【链表排序】:链表排序、链表的奇偶重排、重排链表
【算法训练-链表 七】【链表排序】:链表排序、链表的奇偶重排、重排链表
63 1
|
6月前
|
算法
leetcode-328:奇偶链表
leetcode-328:奇偶链表
46 0
【面试必刷TOP101】判断一个链表是否为回文结构 & 链表的奇偶重排
【面试必刷TOP101】判断一个链表是否为回文结构 & 链表的奇偶重排
45 0
每日一题——链表的奇偶重排
每日一题——链表的奇偶重排
|
JavaScript 前端开发 索引
leetcode.328奇偶链表——Javascript实现方案
leetcode.328奇偶链表——Javascript实现方案
81 0