小白水平理解面试经典题目LeetCode 21. Merge Two Sorted Lists【Linked List类】

21. 将两个有序列表融合

Linked List 数据结构也在面试中经常出现,作为很好处理客户信息存储的结构很方便,也是重点必会项目之一,看看我们如何教懂白月光,成功邀约看电影吧。

小白渣翻译

你将获得两个排序链表 list1 和 list2 的头。

将两个列表合并为一个排序列表。该列表应该通过将前两个列表的节点拼接在一起来形成。

返回合并链表的头。

例子

在这里插入图片描述

这里是小白理解

这种题目我们首先把他进行下条件梳理

  1. 链表类题目,我们首先要对链表结构有一定了。
  2. 题目描述意思说的简单一些,就是将两个有序链表的元素,最终都放在一个ListNode中,但是这里描述有些问题,他没有提到有序,如果加上,对于大家理解会更加清晰一些。

但是这题有些不清晰就在于得需要每个结果适合另外一个ListNode中的值有关系,而且相比于Array或者String要对ListNode List熟悉一些。,这时候黑长直女神过来问:小白,你这题怎么思考的啊?

小白内心镇定:小美,《年会不能停》有机会一起去看看吧?
在这里插入图片描述
哦,不是,这道题咱们可以考虑下用个dummy Node(虚拟节点)来辅助做题

  • 首先,我们为新的合并链表创建一个虚拟节点

  • 接下来我们创建两个指针,一个指向list1,另一个指向list2。

  • 现在遍历列表,直到其中一个列表耗尽为止。

  • 如果指向任一列表的节点的值小于另一个指针,则将该节点添加到我们的合并列表中并递增该指针。

小美:小伙子,可以啊,这不仅逻辑感人,阅读理解也有俩下子!不过电影票要你买单哦。

小白:没问题,谁叫为了“真爱”呢

在这里插入图片描述

真正面试环节

面试官:你可以解答这道”融合链表“的题目吗,来看看你对linked List结构的理解。

小白:嘿嘿,这不巧了么这不是
在这里插入图片描述

public static ListNode mergeTwoLists(ListNode list1, ListNode list2) {// 首先,确保链表都不为空if (list1 != null && list2 != null) {// 如果链表1的第一个值小于链表2的第一个值if(list1.val < list2.val) {// 回归算法,找到链表1的next值list1.next = mergeTwoLists(list1.next, list2);return list1;} else {// 如果链表1的值大于链表2遍历的值list2.next = mergeTwoLists(list1, list2.next);return list2;}}// 如果链表1为空,那么直接返回链表2if(list1 == null) {return list2;}return list1;}

小明:OK,完事儿,等着面试官来表扬自己吧。他肯定会说:小子,你是个好手!工位都给你准备好了,工资你说了算。

面试官:矮油,不错啊,不过你这能不能写个测试啊。

小明OS:今年这个找工市场,人言洛阳花似锦,偏我来时不逢春。。。不是,怎么还让我些test case 啊!

static void printList(ListNode node) {while (node != null) {System.out.print(node.val + " ");node = node.next;}}public static void main(String[] args) {ListNode list1 = new ListNode(1);ListNode list2 = new ListNode(1);list1.next = new ListNode(2);list1.next.next = new ListNode(4);list2.next = new ListNode(3);list2.next.next = new ListNode(4);ListNode mergeTwoLists = mergeTwoLists(list1, list2);printList(mergeTwoLists);}

小白:您好,面试官,这回可以了吧,我终于有钱请小美看电影了!
在这里插入图片描述

============================================================================
🍀🍀🍀🍀🍀🍀更多算法题解请看 面试数据结构与算法总结分类+leetcode目录【基础版】

编码道路漫漫,只要先看脚下的路,徐徐前进即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/451987.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 查看系统信息 + 服务信息命令(简记)

概述 作用&#xff1a;Linux 运维工作中常用的命令速查 小步教程 (xiaobuteach.com) Linux 命令大全 | 菜鸟教程 (runoob.com) 文本编辑器vim 本章大纲 | 小步教程 vim 多文件编辑 | 小步教程 常用 ps 查看服务启动命令 Linux ps 命令 | 菜鸟教程 (runoob.com) # 查找…

队列---数据结构

定义 队列&#xff08;Queue&#xff09;简称队&#xff0c;也是一种操作受限的线性表&#xff0c;只允许在表的一端进行插入&#xff0c;而在表的另一端进行删除。向队列中插入元素称为入队或进队&#xff1b;删除元素称为出队或离队。 队头&#xff08;Front&#xff09;&a…

华为机考入门python3--(5)牛客5-进制转换

分类&#xff1a;数字 知识点&#xff1a; 十六进制转int num int(hex_num, 16) int转十六进制 hex_num hex(num) 题目来自【牛客】 hex_num input().strip() dec_num int(hex_num, 16) print(dec_num) by 软件工程小施同学

Java Arrays 的相关操作数组排序

Java Arrays 的相关操作数组排序 package com.zhong.arrays;import java.math.BigDecimal; import java.util.Arrays; import java.util.Comparator;public class ArraysDemo {public static void main(String[] args) {int[] arr {10, 20, 40, 30, 90, 60, 10, 30, 50};// A…

C++多线程编程:解锁性能与并发的奥秘

通过本文&#xff0c;我们深入了解了C中的多线程编程&#xff0c;探讨了创建线程、数据同步、原子操作、同步和通信、异步任务与Future/Promise、性能优化与线程池等主题。 今天我们将深入探讨C中的多线程编程&#xff0c;揭示多线程如何解锁性能潜力&#xff0c;提高程序的并…

河西走廊潜在蒸散发时空格局变化与气象因素的关系_马亚丽_2023

河西走廊潜在蒸散发时空格局变化与气象因素的关系_马亚丽_2023 摘要关键词 1 数据与方法1.1 数据来源1.2 变化趋势分析1.3 定性分析方法1.3.1 主成分分析1.3.2 相关系数1.3.3 通径分析 1.4 定量分析方法1.4.1 敏感系数1.4.2 贡献率计算 2 结果与分析2.1 ET0多年变化特征2.1.1 E…

乐意购项目前端开发 #6

一、商品详情页面 代码模版 创建Detail文件夹, 然后创建index.vue文件 <script setup> import { getDetail } from "/api/goods/index"; import { ref, onMounted } from "vue"; import { useRoute } from "vue-router"; import { useCar…

正点原子--STM32定时器学习笔记(2)

书接上文&#xff0c;本篇是对基本定时器实验部分进行总结&#xff01; 实验目标&#xff1a;通过TIM6基本定时器定时500ms&#xff0c;让LED0每隔500ms闪烁。 解决思路&#xff1a;使用定时器6&#xff0c;实现500ms产生一次定时器更新中断&#xff0c;在中断里执行“翻转LED0…

【FX110网】日交所发布1月交易数据:衍生品交易额达历年1月最高!

日本交易所集团&#xff08;日交所&#xff0c;JPX&#xff09;发布了其2024年1月的交易数据概览。数据显示&#xff0c;该交易所当月衍生品交易额创新历年来的1月交易数据最高纪录。2024年1月共有19个交易日。 2024年1月交易概览现货股票市场 2024年1月&#xff0c;该交易所主…

浅谈QT的几种线程的使用和区别。

简介&#xff1a; 线程是操作系统中的基本执行单元&#xff0c;是一个独立的执行路径。每个线程都有自己的栈空间&#xff0c;用于存储本地变量和函数调用的上下文。多个线程可以在同一进程中并发执行&#xff0c;从而实现并发处理&#xff0c;提高程序的性能和响应能力。 与进…

2020年通信工程师初级专业实务真题

文章目录 一、第1章 现代通信网概述&#xff1a;信令网、同步网、管理网。第10章 通信业务&#xff1a;通信产业链&#xff0c;通信终端的分类&#xff0c;通信业务的定义及分类二、第3章 接入网&#xff1a;无线接入网的优点&#xff0c;接入网的接口&#xff08;UNI&#xff…

13.从桥接模式细品人生的几座桥

“物理学不存在了&#xff0c;今后也不会存在。”——《三体》 在《三体》中&#xff0c;有这样一个桥段&#xff0c;顶级的物理学家杨冬在三体文明超级计算机“智子”的干扰和误导下&#xff0c;得出了物理实验的结果在实验之前就会被某种力量确定的结论&#xff0c;导致自己…