zoukankan      html  css  js  c++  java
  • 0024-leetcode-两两交换链表中的节点-swap-nodes-in-pairs-python&golang

    给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

    你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

    示例 1:

    输入:head = [1,2,3,4]
    输出:[2,1,4,3]
    示例 2:

    输入:head = []
    输出:[]
    示例 3:

    输入:head = [1]
    输出:[1]

    提示:

    链表中节点的数目在范围 [0, 100] 内
    0 <= Node.val <= 100

    进阶:你能在不修改链表节点值的情况下解决这个问题吗?(也就是说,仅修改节点本身。)

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs

    见图解:https://leetcode-cn.com/problems/swap-nodes-in-pairs/solution/bi-jiao-zhi-jie-gao-xiao-de-zuo-fa-han-tu-jie-by-w/

    python

    # 0024.交换链表节点
    
    class ListNode:
        def __init__(self, val):
            self.val = val
            self.next = None
    
    
    class Solution:
        def swapPairs(self, head: ListNode) -> ListNode:
            """
            多指针交换, 先画图再写代码
            :param head:
            :return:
            """
            dummy = ListNode(-1)
            dummy.next = head
            tmp = dummy
            while tmp.next and tmp.next.next:
                p1, p2 = tmp.next, tmp.next.next
                tmp.next, p1.next = p2, p2.next
                p2.next = p1
                tmp = tmp.next.next
            return dummy.next
    
    

    golang

    // 多指针-三指针交换,画图实现
    func swapPairs(head *ListNode) *ListNode {
    	dummy := &ListNode{}
    	dummy.Next = head
    	tmp := dummy
    	for tmp.Next != nil && tmp.Next.Next != nil {
    		p1, p2 := tmp.Next, tmp.Next.Next
    		tmp.Next, p1.Next = p2, p2.Next
    		p2.Next = p1
    		tmp = tmp.Next.Next // 完成新的循环
    	}
    	return dummy.Next
    }
    
    
  • 相关阅读:
    团队博客18
    团队博客17
    团队博客16
    团队博客15
    团队博客14
    团队博客13
    团队博客12
    课堂作业08--MVC框架的具体应用
    课堂作业07--MVC框架
    课堂作业06--23中设计模式
  • 原文地址:https://www.cnblogs.com/davis12/p/15511225.html
Copyright © 2011-2022 走看看