代码随想录第三天 链表

第一题 https://leetcode.cn/problems/remove-linked-list-elements/submissions/691848826/

python 复制代码
# Definition for singly-linked list.
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next


from typing import Optional


class Solution:
    def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]:
        dummy = ListNode(0, head)
        cur = dummy

        while cur.next:
            if cur.next.val == val:
                cur.next = cur.next.next
            else:
                cur = cur.next

        return dummy.next

注意cur.next为待删除目标时cur不往后移,因为后面还可能是相同元素。虚拟头结点还是挺方便的。

第二题 反转链表https://leetcode.cn/problems/reverse-linked-list/description/

python 复制代码
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        cur = head
        pre = None
        while cur:
            next = cur.next
            cur.next = pre
            pre = cur
            cur = next
        return pre

代码不难,也用不着虚拟头结点。

第三题 https://leetcode.cn/problems/design-linked-list/description/

设计类的还是有点难度的,注意索引是否越界要提前判断,首尾插入都应该是按索引插入的特例

相关推荐
Morwit21 分钟前
*【力扣hot100】 215. 数组中的第K个最大元素
数据结构·c++·算法·leetcode·职场和发展
ab15151722 分钟前
3.20二刷基础121、127,完成进阶61、62
数据结构·算法·排序算法
I_LPL24 分钟前
day58 代码随想录算法训练营 图论专题11
数据结构·算法·图论
小比特_蓝光31 分钟前
算法篇1-----双指针
数据结构·算法
lihao lihao38 分钟前
二分查找
java·数据结构·算法
WolfGang00732141 分钟前
代码随想录算法训练营 Day15 | 二叉树 part05
数据结构·算法
LDR0061 小时前
如何使用OpenClaw提高工作效率?
数据结构·算法
liuyao_xianhui1 小时前
优选算法_模拟_替换所有的‘?‘_C++
开发语言·javascript·数据结构·c++·算法·链表·动态规划
菜鸟小九1 小时前
hot100(81-90)
java·数据结构·算法