概述
交替合并两个链表 给定一个链表 L1: L0->L1->L2->L3->L4....Ln 给定一个链表 L2: Lm->Lm+1->L....LM+n 例如 输入 链表1:head->1->3->5->7 链表2:head->2->4->6->8->10->12 输出:head->1->2->3->4->5->6->7->8->10->12
private static class ListNode {
Object value;
ListNode next;
public ListNode(Integer value) {
this.value = value;
}
}
public static void main(String[] args) {
ListNode head1 = new ListNode(null);
ListNode head2 = new ListNode(null);
ListNode node1 = new ListNode(1);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(3);
ListNode node4 = new ListNode(4);
ListNode node5 = new ListNode(5);
ListNode node6 = new ListNode(6);
ListNode node7 = new ListNode(7);
ListNode node8 = new ListNode(8);
ListNode node10 = new ListNode(10);
ListNode node12 = new ListNode(12);
head1.next = node1;
node1.next = node3;
node3.next = node5;
node5.next = node7;
head2.next = node2;
node2.next = node4;
node4.next = node6;
node6.next = node8;
node8.next = node10;
node10.next = node12;
merge(head1.next, head2.next);
}
private static ListNode merge(ListNode list1, ListNode list2) {
print(list1);
print(list2);
ListNode listNode = new ListNode(0);
ListNode pointer = listNode;
// 定义二个指针
ListNode current1 = list1;
ListNode current2 = list2;
while (current1 != null && current2 != null) {
pointer.next = current1;
current1 = current1.next;
pointer.next.next = current2;
current2 = current2.next;
pointer = pointer.next.next;
}
if (current1 != null) {
pointer.next = current1;
}
if (current2 != null) {
pointer.next = current2;
}
print(listNode.next);
return listNode.next;
}
/**
* 打印链表
* @param head
*/
public static void print(ListNode head) {
ListNode current = head;
while (current != null) {
System.out.print(current.value+",");
current = current.next;
}
System.out.println();
System.out.println("**************");
}
最后
以上就是含蓄冰棍为你收集整理的面试题:交替合并两个链表的全部内容,希望文章能够帮你解决面试题:交替合并两个链表所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复