【LeetCode】328.奇偶链表
2023-09-14 09:13:25 时间
1.题目
2.分析
按照奇偶位置进行分割,然后再链接一下即可。
3.代码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def oddEvenList(self, head: Optional[ListNode]) -> Optional[ListNode]:
if not head:
return head
# 这题就可以按照奇偶链表的分割来做
# 针对奇偶长度来判断
h1 = h2 = head
s1 = s2 = head
h2 = h2.next
s2 = s2.next
pre = None
while(h1 and h2):
tmp1 = h2.next
h1.next = h2.next
pre = h1
h1 = tmp1
if h2.next:
h2.next = h2.next.next
h2 = h2.next
if h1: # 长度为奇数的链表需要考虑的问题
pre = h1
pre.next = s2
return s1
相关文章
- Java实现 LeetCode 786 第 K 个最小的素数分数(大小堆)
- Java实现 LeetCode 707 设计链表(环形链表)
- Java实现 LeetCode 328 奇偶链表
- Java实现 LeetCode 278 第一个错误的版本
- Java实现 LeetCode 274 H指数
- Java实现 LeetCode 206 反转链表
- Java实现 LeetCode 203 移除链表元素
- Java实现 LeetCode 83 删除排序链表中的重复元素
- Java实现 LeetCode 83 删除排序链表中的重复元素
- Java实现 LeetCode 19删除链表的倒数第N个节点
- 【数组&双指针】leetcode 234. 回文链表【简单】
- 每日一道 LeetCode (34):环形链表
- (LeetCode 189)Rotate Array
- [LeetCode] Game of Life
- 【数组&双指针】leetcode 234. 回文链表【简单】
- LeetCode(19):删除链表的倒数第N个节点
- 【LeetCode 23】合并K个排序链表
- 【LeetCode 13】罗马数字转整数
- Leetcode 1711. 大餐计数
- [LeetCode] 109. 有序链表转换二叉搜索树 ☆☆☆(递归)
- leetcode 141. 环形链表 js 实现
- LeetCode 136. 只出现一次的数字
- 【LeetCode】24. 两两交换链表中的节点