21 合并两个有序数组

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
		ListNode result = new ListNode(0);
		ListNode point = result;
		//三种情况,大于,小于,等于
        //结果以l1、l2作为另外另个链表的指针,遍历
		while(l1!=null&&l2!=null) {
				if(l1.val>l2.val) {
					point.next = new ListNode(l2.val);
					point = point.next;
					if(l2.next==null||l2.next.val>l1.val) {
						point.next = new ListNode(l1.val);
						point=point.next;
						l1=l1.next;
					}
					l2=l2.next;
				}else if(l1.val<l2.val){
					point.next = new ListNode(l1.val);
					point = point.next;
					if(l1.next==null||l1.next.val>l2.val) {
						point.next = new ListNode(l2.val);
						point=point.next;
						l2=l2.next;
					}
					l1=l1.next;
				}else {
					point.next = new ListNode(l2.val);
					point=point.next;
					point.next = new ListNode(l2.val);
					point=point.next;
					l1=l1.next;
					l2=l2.next;
				}
		}
		while(l1!=null) {
			point.next = new ListNode(l1.val);
			point = point.next;
			l1=l1.next;
		}
		while(l2!=null) {
			point.next = new ListNode(l2.val);
			point = point.next;
			l2=l2.next;
		}
		return result.next;
	}
}

猜你喜欢

转载自blog.csdn.net/zcy_wxy/article/details/86534959