剑指offer--输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

xiaoxiao2022-06-11  32

合并两个有序链表是一道很常见的提醒,可以利用分治思想用递归实现,或者是不用递归,递归比较难理解。下面给出非递归的方法。

/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { //新建一个头节点,用来存合并的链表。 ListNode head=new ListNode(-1); head.next=null; ListNode root=head; while(list1!=null&&list2!=null) { if(list1.val<list2.val){ head.next=list1; head=list1; list1=list1.next; } else { head.next=list2; head=list2; list2=list2.next; } } //如果有一个链表为空,另一个链表非空,则应该把非空链表合并到链表尾部。 if(list1!=null) { head.next=list1; } if(list2!=null) { head.next=list2; } return root.next; } }

      首先我们创建一个新的节点,用来存合并新的链表,这样比较好实现,然后分别比较链表1和2的值,这样其实是打乱了原来的两个链表。

 

转载请注明原文地址: https://www.6miu.com/read-4930528.html

最新回复(0)