第八周
发布于: 2020 年 11 月 15 日
有两个单向链表(链表长度分别为m,n),这两个单向链表有可能在某个元素合并,也
可能不合并,如下图所示的这样。现在给定两个链表的头指针,在不修改链表的情况下,
如何快速地判断这两个链表是否合并?如果合并,找到合并的元素,也就是图中的x 元
素。
请用代码(或伪代码)描述算法,并给出时间复杂度。
package com.demo;/****************************** * 用途说明: 节点 * 作者姓名: chenshijie * 创建时间: 2020/11/15 11:36 ******************************/public class Node { public char data; public Node next; public char getData() { return data; } public void setData(char data) { this.data = data; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; }}
package com.demo;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/****************************** * 用途说明: 链表操作 * 作者姓名: chenshijie * 创建时间: 2020/11/15 11:38 ******************************/public class Link { private static final Logger LOGGER = LoggerFactory.getLogger(Link.class); /** * 将两个链表合并到新链表 * @param head1 * @param head2 */ public static void mergeToNewNode(Node head1, Node head2) { Node newNode = new Node(); merge(newNode,head1,head2); } public static void merge(Node newNode, Node head1, Node head2) { if (head1.data > head2.data) { newNode.next = head2; merge(newNode.next,head1, head2.next); } else if(head1.data < head2.data){ newNode.next = head1; merge(newNode.next,head1.next, head2); }else{ LOGGER.info("链表出现了合并元素:{} ==== {}",head1.data,head2.data); } }}
将两个链表合并到一个全新的链表,一旦出现了相同的元素就说明两个链表有合并,时间复杂度O(n+m)
划线
评论
复制
发布于: 2020 年 11 月 15 日阅读数: 19
Geek_fabd84
关注
还未添加个人签名 2019.06.30 加入
还未添加个人简介
评论