type
status
date
slug
summary
tags
category
icon
password
创建时间
Nov 4, 2024 03:24 AM
这是一道组合题,拆开的话Leetcode能找到
合并两个有序链表
https://leetcode.cn/problems/merge-two-sorted-lists/
反转链表
https://leetcode.cn/problems/reverse-linked-list/description/
奇偶链表(这道题主要是偶数链在了奇数后面,字节这个的话是奇偶分离了)
https://leetcode.cn/problems/odd-even-linked-list/description/
21. 合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
朴素写法
可以加快的写法,后面不用再重复挨个赋值。
206. 反转链表
给你单链表的头节点
head
,请你反转链表,并返回反转后的链表。反转单链表有两种写法,这是比较简单的写法。
这个是稍微复杂的写法
Java 版本
328. 奇偶链表
给定单链表的头节点
head
,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。
请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。
你必须在
O(1)
的额外空间复杂度和 O(n)
的时间复杂度下解决这个问题。解法:解法代码稍微优点冗余,但是可读性还是好理解。我们先初始化两个虚拟节点,分别是用于指向奇偶链表的头节点。然后就开始遍历链表,奇偶拆分。这样就会得到两个链表,最后首尾相接两个链表。
在连接链表的时候,需要注意的是偶链表的结尾。如果原来的整个链表是偶数个节点,那么得到的偶链表的最后节点的
next
是指向为 nullptr
的,这是没问题。如果是原来的整个链表是奇数个节点,那么得到的偶链表的最后节点的 next
是指向为链表的最后的元素,不是指向为 nullptr
的,会导致链表出现循环。简洁一点的写法,理解上会有点麻烦。