Leetcode328奇偶链表,Leetcode21合并两个有序链表,Leetcode206反转链表 三者综合题

题目描述

思路分析 

这题的思路就和我们的标题所述一样,可以看作是这3个题的合并,但是稍微还有一点点区别
比如:奇偶链表这道题主要是偶数链在了奇数后面,字节这个的话是奇偶链表分离了
所以字节这题的大概思路就是:

将奇偶链表分离,反转偶链表,然后将反转后的偶链表和奇链表进行合并(也就是合并两个有序链表)

总体来说不是很难,思路也比较清晰,还是比较好实现的

不得不说大厂的题还是考的全面,一个题考了3个知识点

代码实现

public ListNode sortLinkedList(ListNode head) {
		if(head == null || head.next == null) {
			return head;
		}
		
		// 分离链表为单索引和双索引两个子链表, 并返回链表的头节点,0 - oddHead, 1 - evenHead
		List<ListNode> heads = splitLists(head);
		
		// 反转双索引子链表(递减顺序)变为递增顺序
		ListNode reversedEven = reverse(heads.get(1));
		
		// 合并两个递增子链表
		ListNode mergedHead = mergeTwoSortedLists(heads.get(0),reversedEven);
		return mergedHead;
	}
	
	public List<ListNode> splitLists(ListNode head){
		List<ListNode> heads = new ArrayList<>();
		ListNode oddHead = new ListNode(0);
		ListNode evenHead = new ListNode(0);
		ListNode odd = oddHead;
		ListNode even = evenHead;
		ListNode cur = head;
		boolean isOdd = true;
		
		while(cur != null) {
			if(isOdd) {
				odd.next = cur;
				odd = odd.next;
			}else {
				even.next = cur;
				even = even.next;
			}
			cur = cur.next;
			isOdd = !isOdd;
		}
		
		//断开原链表的链接
		odd.next = null;
		even.next = null;
		
		heads.add(oddHead.next);
		heads.add(evenHead.next);
		return heads;
		
	}
	
	public ListNode reverse(ListNode head) {
		ListNode prev = null;
		while(head != null) {
			ListNode next = head.next;
			head.next = prev;
			prev = head;
			head = next;
		}
		return prev;
	}
	public ListNode mergeTwoSortedLists(ListNode l1, ListNode l2)  {
		ListNode dummy = new ListNode (0);
		ListNode cur = dummy;
		while(l1 != null && l2 != null) {
			if(l1.val <= l2.val) {
				cur.next = l1;
				l1 = l1.next;
			}else {
				cur.next = l2;
				l2 = l2.next;
			}
			cur = cur.next;
		}
		
		//链接剩余部分
		if(l1 != null) {
			cur.next = l1;
		}
		if(l2 != null) {
			cur.next = l2;
		}
		return dummy.next;
	}

总结

如果大家对其中的某一道题还不熟悉的话,建议去刷一下对应的题目,这里给了传送门

206. 反转链表 - 力扣(LeetCode)

21. 合并两个有序链表 - 力扣(LeetCode)

328. 奇偶链表 - 力扣(LeetCode)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自监督学习:机器学习的未来新方向

引言 自监督学习&#xff08;Self-Supervised Learning, SSL&#xff09;是近年来机器学习领域的一个重要发展方向&#xff0c;迅速成为许多研究和应用的热点。与传统的监督学习不同&#xff0c;自监督学习利用未标注数据&#xff0c;通过设计自我生成标签的任务&#xff0c;帮…

【算法】Prim最小生成树算法

目录 一、思想 二、代码 在阅读本文前推荐优先食用&#xff1a; 【算法】Kruskal最小生成树算法-CSDN博客https://blog.csdn.net/Eristic0618/article/details/143312482?spm1001.2014.3001.5501 一、思想 Kruskal算法基于边的选择&#xff0c;因此更适用于稀疏图。而对于…

CPU用户时间百分比

在计算机系统中&#xff0c;"CPU用户时间百分比&#xff08;CPU User Time&#xff09;"是一个性能监控指标&#xff0c;它描述了CPU在用户模式下执行的累积时间与总的CPU时间的比例。这个指标可以帮助我们了解系统在执行用户态程序时的负载情况。下面是一些关于CPU用…

java-智能识别车牌号_基于spring ai和开源国产大模型_qwen vl

用大模型做车牌号识别&#xff0c;最简单高效 在Java场景中&#xff0c;java识别车牌号的需求非常普遍。过去&#xff0c;我们主要依赖OCR等传统方法来实现java识别车牌号&#xff0c;但这些方法的效果往往不稳定。随着技术的发展&#xff0c;现在有了更先进的解决方案——大模…

IoTDB时序数据库使用

简介 Apache IoTDB 是一款低成本、高性能的物联网原生时序数据库。它可以解决企业组建物联网大数据平台管理时序数据时所遇到的应用场景复杂、数据体量大、采样频率高、数据乱序多、数据处理耗时长、分析需求多样、存储与运维成本高等多种问题。 IoTDB官网 1. 连接数据库 官方…

Android camera2

一、序言 为了对阶段性的知识积累、方便以后调查问题&#xff0c;特做此文档&#xff01; 将以camera app 使用camera2 api进行分析。 (1)、打开相机 openCamera (2)、创建会话 createCaptureSession (3)、开始预览 setRepeatingRequest (4)、停止预览 stopRepeating (5)、关闭…

【设计模式系列】组合模式(十二)

目录 一、什么是组合模式 二、组合模式的角色 三、组合模式的典型应用 四、组合模式在Mybatis SqlNode中的应用 4.1 XML映射文件案例 4.2 Java代码使用案例 一、什么是组合模式 组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;其核…

【Linux 27】HTTP 协议中的 cookie 和 session

文章目录 &#x1f308;一、Cookie 的相关概念⭐ 1. Cookie 的概念⭐ 2. Cookie 的工作原理⭐ 3. Cookie 的分类⭐ 4. Cookie 的用途⭐ 5. Cookie 设置的基本格式⭐ 6. Cookie 设置时的注意事项⭐ 7. Cookie 的生命周期⭐ 8. Cookie 的安全性问题 &#x1f308; 二、Session 的…

flask小白注意了!当我们通过IP:5000的形式无法访问服务时,大概率问题出在这里!!!

我们在使用Flask开发应用时&#xff0c;通过127.0.0.1:5000 或者localhost:5000访问应用正常&#xff0c;但是当使用本机ip 访问时却出现了 无法访问此网站的错误&#xff0c;如下图&#xff1a; 按照图中的提示&#xff0c;检查了代理服务器和防火墙&#xff08;包括关闭了电脑…

Excel:vba实现批量插入图片

实现的效果&#xff1a; 实现的代码&#xff1a; Sub InsertImageNamesAndPictures()Dim PicPath As StringDim PicName As StringDim PicFullPath As StringDim RowNum As IntegerDim Pic As ObjectDim Name As String 防止表格里面有脏数据Cells.Clear 遍历工作表中的每个图…

余承东放话,华为最强旗舰马上就来,国产系统迎来关键一战

Mate 70系列要来了&#xff01; 10月&#xff0c;OPPO、小米、vivo、荣耀等一众手机厂商都抛出了年度旗舰手机&#xff0c;机圈大战闹得沸沸扬扬。那边厢&#xff0c;低调的华为也终于传来了激动人心的消息&#xff1a;Mate 70系列要来了&#xff01;余承东在微博发文称Mate 7…

Linux之实战命令65:hostnamectl应用实例(九十九)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

电力电子计算部分

1.瞬时功率 任何装置、设备的瞬时功率都是通过加在其上的电压及其流过的电流计算的&#xff0c;表达式为&#xff1a; 瞬时功率表达式适用于任何装置、设备或电路。瞬时功率是一个时变的量。 2.能量 能量或功&#xff0c;是对瞬时功率在时间上的积分。在时间t1到t2内所有吸收…

使用QtWebEngine的Mac应用如何发布App Store

前言 因为QtWebEngine时第三方包,苹果并不直接支持进行App Store上签名和发布,所以构建和发布一个基于使用QtWebEngine的应用程序并不容易,这里我们对Qt 5.8稍微做一些修改,以便让我们的基于QtWeb引擎的应用程序并让签名能够得到苹果的许可。 QtWebEngine提供了C++和Qml的…

《计算机网络》课后探研题书面报告_了解网络设备

引言 计算机网络自20世纪60年代首次提出以来&#xff0c;已经发展成为现代社会不可或缺的基础设施。最早的计算机网络仅用于连接少数设备&#xff0c;用于简单的数据传递与共享。随着互联网技术的迅速普及和计算机技术的飞跃发展&#xff0c;网络的规模和复杂性不断增加&#…

【用Java学习数据结构系列】泛型上界与通配符上界

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 个人主页&#xff1a;Gu Gu Study 专栏&#xff1a;用Java学习数据结构系列 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xff…

ssm校园线上订餐系统的设计与实现+vue

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码看文章最下面 需要定制看文章最下面 目 录 摘 要 I 目 录 III 第1章 绪论 1 1.1 研究背景 1 1.2目的和意义 1 1.3 论文研究内容 1 …

软设师知识点-计算机网络

计算机网络 在一台安装好TCP/IP协议的计算机上&#xff0c;当网络连接不可用时&#xff0c;为了测试编写好的网络程序&#xff0c;通常使用的目的主机IP地址127.0.0.1&#xff08;本地回送地址&#xff09; *网络设备 物理层的互传设备&#xff1a;中继器(用于扩展局域网网段…

【339】基于springboot的新能源充电系统

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;新能源充电系统的设计与实现 摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解…

Spring Boot2(Spring Boot 的Web开发 springMVC 请求处理 参数绑定 常用注解 数据传递 文件上传)

SpringBoot的web开发 静态资源映射规则 总结&#xff1a;只要静态资源放在类路径下&#xff1a; called /static (or /public or /resources or //METAINF/resources 一启动服务器就能访问到静态资源文件 springboot只需要将图片放在 static 下 就可以被访问到了 总结&…