• 数据结构与算法(三):链表经典面试题


    单链表查找、删除相关类型

    题目1:删除链表的倒数第N个节点

    题目

    给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

    示例:

    给定一个链表: 1->2->3->4->5, 和 n = 2.
    
    当删除了倒数第二个节点后,链表变为 1->2->3->5.
    

    说明

    给定的 n 保证是有效的。

    进阶

    ​ 你能尝试使用一趟扫描实现吗?

    题目2:从链表中删去总和值为零的连续节点

    题目

    给你一个链表的头节点 head,请你编写代码,反复删去链表中由 总和 值为 0 的连续节点组成的序列,直到不存在这样的序列为止。

    删除完毕后,请你返回最终结果链表的头节点。

    你可以返回任何满足题目要求的答案。

    (注意,下面示例中的所有序列,都是对 ListNode 对象序列化的表示。)

    示例 1:

    输入:head = [1,2,-3,3,1]
    输出:[3,1]
    提示:答案 [1,2,1] 也是正确的。
    

    示例 2:

    输入:head = [1,2,3,-3,4]
    输出:[1,2,4]
    

    示例 3:

    输入:head = [1,2,3,-3,-2]
    输出:[1]
    

    提示:

    • 给你的链表中可能有 1 到 1000 个节点。
    • 对于链表中的每个节点,节点的值:-1000 <= node.val <= 1000.

    环形链表相关类型

    题目3:环形链表

    题目

    给定一个链表,判断链表中是否有环。

    如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。

    题目4:环形链表 II

    题目

    给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

    为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。

    链表反转相关类型

    题目5:反转链表 II

    题目

    反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。

    说明:
    1 ≤ m ≤ n ≤ 链表长度。

    示例:

    输入: 1->2->3->4->5->NULL, m = 2, n = 4
    输出: 1->4->3->2->5->NULL
    

    题目6:K 个一组翻转链表

    题目

    给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。

    k 是一个正整数,它的值小于或等于链表的长度。

    如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。

    示例:

    给你这个链表:1->2->3->4->5
    当 k = 2 时,应当返回: 2->1->4->3->5
    当 k = 3 时,应当返回: 3->2->1->4->5
    

    说明:

    • 你的算法只能使用常数的额外空间。
    • 你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。
  • 相关阅读:
    人脸识别常用数据集大全(12/20更新)
    103 保序回归 isotonic regression
    SVM的概率输出(Platt scaling)
    scikit_learn 中文说明入门
    外点惩处函数法·约束优化问题
    unigui 设置单元格颜色
    一些仪器的解码程序(delphi)
    phpstudy 配置 memcached / memcache
    OmniThreadLibrary学习笔记
    注意微信支付的配置
  • 原文地址:https://www.cnblogs.com/dtdx/p/13849772.html
Copyright © 2020-2023  润新知