首页 > 其他分享 >【leetcode-链表】两两交换链表中的节点

【leetcode-链表】两两交换链表中的节点

时间:2023-03-23 15:01:06浏览次数:43  
标签:pre null ListNode next 链表 node1 节点 node2 leetcode


题目:

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

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

 

示例:

1->2->3->4
2->1->4->3

思路:

首先需要建立pre、node1、node2和lat四个指针即可。

pre   node1  node2   lat
 h  ->  1  ->  2  ->  3  ->  4

然后pre->next=node2;node2.next=node1;node1.next=lat
 

接着向前移4个指针;

java代码:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode swapPairs(ListNode head) {
        if(head ==null || head.next==null) {
            return head;
        }

        ListNode h = new ListNode(0);
        ListNode pre = h;
        h.next = head;

        while (pre.next!=null && pre.next.next!=null) {
            ListNode node1 = pre.next;
            ListNode node2 = pre.next.next;
            ListNode lat = node2.next; //有可能为null

            pre.next = node2;
            node2.next = node1;
            node1.next = lat;

            pre = node1;
        }

        return h.next;
    }
}

 

由于水平有限,文章中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!

及时更新最新文章和学习资料,一起来学习:

【leetcode-链表】两两交换链表中的节点_链表

标签:pre,null,ListNode,next,链表,node1,节点,node2,leetcode
From: https://blog.51cto.com/u_6813689/6145102

相关文章

  • 【leetcode-动态规划】斐波那契数
    题目:斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0)=0,  F(1) =1F(N)=......
  • 每日一题-leetcode 环绕字符串中唯一的子字符串
    把字符串s看作是 “abcdefghijklmnopqrstuvwxyz” 的无限环绕字符串,所以 s看起来是这样的:“…zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd…”.现......
  • 141.环形链表
    给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整......
  • elasticsearch集群扩展新节点
    原集群配置     原来集群的节点不需要做任何修改和重启服务,新节点符合条件会自动加入集群新节点配置    配置文件的集群名字和nodename配置好即可c......
  • m基于时空特性的WSN网络节点故障诊断matlab仿真
    1.算法描述       无线传感网络节点由传感器模块、处理器模块、通信模块、存储模块和电源模块构成,处理器模块是节点的核心单元。 ①传感器模块:负责整个监测区域......
  • m基于时空特性的WSN网络节点故障诊断matlab仿真
    1.算法描述无线传感网络节点由传感器模块、处理器模块、通信模块、存储模块和电源模块构成,处理器模块是节点的核心单元。 ①传感器模块:负责整个监测区域内信息的采集和数......
  • 代码随想录Day5-Leetcode242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数
    242.有效的字母异位词准备面试隔了三天没刷题,结果面试里就考到哈希表了,也是蛮感叹的.简单题,不过api又忘的差不多了这道可以用数组手动实现一个简易哈希表,但(因为......
  • LeetCode344. 反转字符串
    题目描述:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外......
  • JZ6 从尾到头打印链表
      链表是存储数据的一种方式,由于内存不是连续的,因此访问只能从表头访问表尾。本题需要从尾部到头打印链表,只能借助特殊的数据结构输出,但是访问顺序不会因此改变。首先......
  • 论单向链表有序插入方案
    0.思考单向链表有序插入,插入点分为这样几个地方:当前链表为空,被插入节点是第一个节点被插入节点作为头结点被插入节点在中间被插入节点在尾部那么按照这样的步骤一......