剑指offer--合并两个排序的链表

来源:互联网 发布:国家行政学院博士 知乎 编辑:程序博客网 时间:2024/06/06 19:30
题目描述

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


public class 合并两个排序的链表 {public static class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}public static void main(String[] args) {// TODO Auto-generated method stubListNode list11 = new ListNode(1);ListNode list12 = new ListNode(3);ListNode list13 = new ListNode(5);list11.next = list12;list12.next = list13;list13.next = null;ListNode list21 = new ListNode(2);ListNode list22 = new ListNode(4);ListNode list23 = new ListNode(6);list21.next = list22;list22.next = list23;list23.next = null;ListNode listNode3 = Merge(list11, list21);while (listNode3.next!=null) {System.out.println(listNode3.val);listNode3 = listNode3.next;}System.out.println(listNode3.val);}    public static ListNode Merge(ListNode list1,ListNode list2) {    if (list1==null&&list2==null) {return null;}    if (list1==null) {return list2;}    if (list2==null) {return list1;}    ListNode list3 = null;    ListNode current = null;        while (list1!=null&&list2!=null) {if (list1.val>list2.val) {if (list3!=null) {current.next = list2;current = list2;}else {list3 = list2;current = list2;}list2 = list2.next;}else {if (list3!=null) {current.next = list1;current = list1;}else {list3 = list1;current = list1;}list1 = list1.next;}}    if (list1 == null) {current.next = list2;}else{current.next = list1;}    return list3;            }}


原创粉丝点击