首页 > 编程语言 >Java面试题:链表-合并两个排序的链表

Java面试题:链表-合并两个排序的链表

时间:2023-11-03 11:32:19浏览次数:31  
标签:current 面试题 ListNode val 链表 pHead1 Java null

在这里插入图片描述

描述

输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。

示例

输入:
{1,3,5}, {2,4,6}

返回值:
{1,2,3,4,5,6}

原题地址:https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337

代码实现

package com.example.demo.linked;


public class ListNode {
    int val;
    ListNode next = null;

    public ListNode(int val) {
        this.val = val;
    }
}

package com.example.demo.linked;

public class LinkUtil {
    public static void printNodeList(ListNode head) {
        ListNode current = head;

        while (current != null) {
            System.out.print(current.val + " ");
            current = current.next;
        }
        
        System.out.println();
    }
}
package com.example.demo.linked;

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * @param pHead1 ListNode类
     * @param pHead2 ListNode类
     * @return ListNode类
     */
    public ListNode Merge(ListNode pHead1, ListNode pHead2) {
        // write code here

        if (pHead1 == null) {
            return pHead2;
        } else if (pHead2 == null) {
            return pHead1;
        }

        ListNode head = new ListNode(0);
        ListNode current = head;

        while (true) {
            if (pHead1 == null) {
                current.next = pHead2;
                break;
            } else if (pHead2 == null) {
                current.next = pHead1;
                break;
            } else {
                if (pHead1.val <= pHead2.val) {
                    current.next = pHead1;
                    pHead1 = pHead1.next;
                } else {
                    current.next = pHead2;
                    pHead2 = pHead2.next;
                }

                current = current.next;
            }
        }

        return head.next;
    }

    public static void main(String[] args) {
        // 1 3 5
        ListNode listNode1 = new ListNode(1);
        ListNode listNode2 = new ListNode(3);
        ListNode listNode3 = new ListNode(5);

        listNode1.next = listNode2;
        listNode2.next = listNode3;
        LinkUtil.printNodeList(listNode1);

        // 2 4 6
        ListNode listNodeA = new ListNode(2);
        ListNode listNodeB = new ListNode(4);
        ListNode listNodeC = new ListNode(6);

        listNodeA.next = listNodeB;
        listNodeB.next = listNodeC;
        LinkUtil.printNodeList(listNodeA);

        // 合并链表
        ListNode listNode = new Solution().Merge(listNode1, listNodeA);

        LinkUtil.printNodeList(listNode);

    }
}

标签:current,面试题,ListNode,val,链表,pHead1,Java,null
From: https://blog.51cto.com/mouday/8163182

相关文章

  • java基础学习:path,java_home环境变量配置
    1.path变量: 装jdk后会自动配置java和javac的path路径 2.JAVA_HOME环境变量:   ......
  • JAVA内存分配
    1.类(包含该类的方法)的字节码文件进入方法区处于候命状态2.虚拟机调用了该类的方法后,方法进入栈内存,并执行方法3.当运行方法过程中出现了“new”,就会在堆内存中开辟对应空间,并把该空间的地址返回给arr变量记录,因此就可以通过arr找到对应的堆内存空间 注意: ......
  • java笔记_15_动态生成Excel文件
    //创建表头数据//内层List按纵向创建,外层List按横向添加,横向重复的名称会自动合并表格。List<List<String>>list=newArrayList<>();List<String>childList1=newArrayList<>();childList1.add("aaa");childList1.add("bbb");childList1.add......
  • JavaScript for循环语句的特殊案例,用代码解决数学中的问题
    案例一:一百个和尚分一百个馒头,大和尚一人分三个,小和尚三人分一个,正好分完。问大、小和尚各几人?varnum=100;varpeople=100;varbig,small;for(big=0;big<=33;big++){small=people-big;if(big*3+small/3==num){d......
  • JAVA基础
    打开CMD的方式1.开始+系统+命令指示符2.win+r(输入cmd)打开控制台3.在任意的文件夹下面按住(shift)+鼠标右键点击,在此处打开命令窗口4.资源管理器的地址栏前面加上cmd路径5.管理员方式运行(开始-windows系统-命令提示符-鼠标右键更多-管理员方式运行常用dos命令1.盘符切换:英......
  • JavaScript String对象及方法总结
    String对象创建方法: newString()vartxt1=newString("string");vartxt2="string";String对象属性1、constructor:返回对String对象属性创建的函数  返回值:函数的引用,不是函数名:    字符串constructor属性返回 functionString(){[nativecode]}2、......
  • Java 注解
    从JDK5开始,Java增加了对元数据(MetaData)的支持,也就是Annotation(注解),注解可以理解为代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理注解能被用来为程序元素(类、方法、成员变量)设置元数据。如果希望注解在运行时起到一定的作用,只有通过某种配套的工......
  • Java八股面试整理(2)
    11.int和integer有什么区别,两者在做==运算时会得到什么结果?int是基本数据类型,Integer是int的包装类。二者在做==运算时,Integer会自动拆箱为int类型,然后再进行比较。如果两个int值相等则返回true,否则就返回false。12.说一说你对面向对象的理解面向对象是一种更优秀的程序设计方......
  • Java 基础篇day05
    面向对象编程世间万物皆对象,在Java的观念中,把一切都看作对象,但是你操纵的确是一个对象引用。在Java中一旦创建了一个引用,就希望它能与一个新的对象继续关联,通常使用new操作符来实现这一目的。new的意思是,给我一个新对象,如果你不想相亲,自己new一个对象就好了,祝你下辈子幸福对象本......
  • Java网络编程实现一(服务器)对多(客户端)
    使用多线程+网络编程实现一个服务器对多个客户端在该程序中用到的知识点java的BIOServerSocket和Socket网络编程多线程的知识(个人认为重要)实现的思路服务器端(使用多个线程)在客户端需要有一个集合来存储已经连接上的客户端,如果客户端断开连接则需要从集合中删除创建一......