zoukankan      html  css  js  c++  java
  • leetcode — two-sum-ii-input-array-is-sorted

    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * Source : https://oj.leetcode.com/problems/merge-two-sorted-lists/
     *
     * Created by lverpeng on 2017/7/11.
     *
     * Merge two sorted linked lists and return it as a new list. The new list should be
     * made by splicing together the nodes of the first two lists.
     */
    public class MergeTwoSortedList {
    
        /**
         * 把两个链表合并到一个新的链表中
         * 保存新的链表头head,使用一个新链表的指针的current用来指向新链表的尾部,用来添加新的元素
         *
         * 最后加入较长链表的其余元素
         *
         * @param list1
         * @param list2
         * @return
         */
        public Node merge (Node list1, Node list2) {
            Node head = null;
            Node current = null;
            while (list1 != null && list2 != null) {
                Node n = null;
                if (list1.value < list2.value) {
                    n = list1;
                    list1 = list1.next;
                } else {
                    n = list2;
                    list2 = list2.next;
                }
                if (head == null) {
                    head = current = n;
                } else {
                    current.next = n;
                    current = current.next;
                }
    
            }
            list1 = list1 == null ? list2 : list1;
    
            if (list1 != null) {
                if (head != null && current != null) {
                    current.next = list1;
                } else {
                    head = list1;
                }
            }
    
            return head;
        }
    
    
    
        private static class Node {
            int value;
            Node next;
    
            @Override
            public String toString() {
                return "Node{" +
                        "value=" + value +
                        ", next=" + (next == null ? "" : next.value) +
                        '}';
            }
        }
    
        private static void print (Node node) {
            while (node != null) {
                System.out.println(node);
                node = node.next;
            }
        }
    
    
        public static void main(String[] args) {
            MergeTwoSortedList mergeTwoSortedList = new MergeTwoSortedList();
            Node list1 = new Node();
            Node pointer1 = list1;
            list1.value = 1;
            Node list2 = new Node();
            list2.value = 2;
            Node pointer2 = list2;
            for (int i = 3; i < 10; i++) {
                Node node = new Node();
                node.value = i;
                if (i % 2 == 1) {
                    pointer1.next = node;
                    pointer1 = pointer1.next;
                } else {
                    pointer2.next = node;
                    pointer2 = pointer2.next;
                }
            }
            print(list1);
            System.out.println();
            print(list2);
            System.out.println();
            Node result = mergeTwoSortedList.merge(list1, list2);
            print(result);
    
    
        }
    }
    
    
  • 相关阅读:
    c++虚继承
    linux常用命令大全
    数据库三大范式最通俗解释
    PG数据库空间大小及数据库对象占用空间大小
    Oracle表分区详解
    Excel数据导入PG库,字符串正则表达式
    Oracle 执行计划
    ASP.NET MVC5框架揭秘 学习笔记01
    .NET简单学习
    蓝桥杯_算法训练_ALGO10_集合运算
  • 原文地址:https://www.cnblogs.com/sunshine-2015/p/7376028.html
Copyright © 2011-2022 走看看