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


    题目: 328. 奇偶链表

    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
    
    

    image-20201113214140509

  • 相关阅读:
    汉诺塔问题_栈模拟递归
    汉诺塔问题_栈模拟递归
    Dockerfile指令
    Dockerfile指令
    C++全排列组合算法
    剑指offer——复杂链表复制
    数据库中的索引实现原理
    TCP三次握手四次挥手详解
    TCP协议原理
    OSI七层模型
  • 原文地址:https://www.cnblogs.com/we8fans/p/14012834.html
Copyright © 2020-2023  润新知