博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链表算法面试题---合并两个链表
阅读量:2508 次
发布时间:2019-05-11

本文共 1856 字,大约阅读时间需要 6 分钟。

题目描述

给你链表,分别为ListNode1和ListNode2,再给你m,n两个大于等于1的正整数,现在要求你把ListNode1的m到n位置的节点删除,并把删除的位置拼接上ListNode2。

示例:

ListNode1:1—>2—>3—>4—>5—>6

ListNode2:7—>8

m:2

n:3

也就是把ListNode1的3、4节点删除,最终得到:

1—>2—>7—>8—>5—>6

解题思路

我们可以按照m、n的位置对ListNode1进行拆分,分别得到:

head:2—>3—>4—>5—>6

tail:5—>6

接下来我们只需要让head.next指向ListNode2的头,再让ListNode2的尾指向tail即可。

代码实现

public class MergeTwoListNode {
public static void main(String[] args) {
ListNode head = new ListNode(1); ListNode n1 = new ListNode(2); ListNode n2 = new ListNode(3); ListNode n3 = new ListNode(4); ListNode n4 = new ListNode(5); ListNode n5 = new ListNode(6); head.next = n1; n1.next = n2; n2.next = n3; n3.next = n4; n4.next = n5; ListNode n6 = new ListNode(7); ListNode n7 = new ListNode(8); n6.next = n7; System.out.println("原list1链表:" + head); System.out.println("原list2链表:" + n6); System.out.println("合并后:" + mergeTwoListNode(head, 2, 3, n6)); } public static ListNode mergeTwoListNode(ListNode list1, int a, int b, ListNode list2) {
//为了留住原来链表的头节点,一般都可以借助一个哑节点来完成 ListNode dummy = new ListNode(); dummy.next = list1; //准备两个被list1拆分出来的节点,一个作为待拼接的头节点,一个作为待拼接的尾节点 ListNode head = list1; ListNode tail = list1; //遍历,找到头节点、和尾节点的位置,注意头节点只需要遍历到下标的前一个位置,而尾节点需要遍历到下标的下一个位置 for (int i = 0; i <= b; i++) {
if (i < a - 1) {
head = head.next; } tail = tail.next; } ListNode dummy2 = new ListNode(); dummy2.next = list2; //找到list2的尾节点处 while (list2.next != null) {
list2 = list2.next; } //用list2的尾节点拼上tail list2.next = tail; //让头节点的下一个节点指向list2 head.next = dummy2.next; return dummy.next; }}

在这里插入图片描述

转载地址:http://nhlrb.baihongyu.com/

你可能感兴趣的文章
MySQL innert join、left join、right join等理解
查看>>
vivado模块封装ip/edf
查看>>
sdc时序约束
查看>>
Xilinx Jtag Access/svf文件/BSCANE2
查看>>
NoC片上网络
查看>>
开源SoC整理
查看>>
【2020-3-21】Mac安装Homebrew慢,解决办法
查看>>
influxdb 命令行输出时间为 yyyy-MM-dd HH:mm:ss(年月日时分秒)的方法
查看>>
已知子网掩码,确定ip地址范围
查看>>
判断时间或者数字是否连续
查看>>
docker-daemon.json各配置详解
查看>>
Docker(一)使用阿里云容器镜像服务
查看>>
Docker(三) 构建镜像
查看>>
Spring 全家桶注解一览
查看>>
JDK1.8-Stream API使用
查看>>
cant connect to local MySQL server through socket /tmp/mysql.sock (2)
查看>>
vue中的状态管理 vuex store
查看>>
Maven之阿里云镜像仓库配置
查看>>
Maven:mirror和repository 区别
查看>>
微服务网关 Spring Cloud Gateway
查看>>