面试容易被问到的算法题总结

本文总结了面试中常被问到的算法题,包括各种排序算法(如快速排序、归并排序、堆排序、桶排序等)及其复杂度分析,二分查找、哈夫曼树、广度优先遍历、一致性哈希等。同时涵盖了链表操作、二叉树问题、最大子数组和、最长递增子序列等数据结构与算法题目,还涉及设计模式如单例模式、工厂模式,并包含一些智力题,如烧绳子问题。
摘要由CSDN通过智能技术生成

算法类:

有那些排序算法?不同排序算法的稳定性和时间复杂度和空间复杂度

写一个排序

快速排序算法 、写代码:快排时间复杂度(平均、最坏)、快排的思想,什么情况下要用什么排序算法、稳定性如何

手写归并排序

讲一下堆排序的过程

了解桶排序吗?讲一下

还有什么排序算法,插入排序如何改进为 nlogn的时间复杂度,什么排序算法效率最高呢

二分查找

二分查找与二叉搜索树

哈夫曼树,以及哈夫曼编码

树的广度优先遍历

广度优先遍历一个图、写一下代码

一致性哈希算法、

hash表与二叉树的区别

红黑树、口胡建树过程

红黑树介绍,加入一个结点时,它应该是红的还是黑的

跳表和红黑树的区别

b+树介绍,使用场景

b树和b+树、B、B+树的区别

分治思想

算法拓展类:

写反转链表

node *reverse(node *head)//链表的逆置
{
    node *next;
    node *prev = NULL;
    while (head != NULL)
    {
        next = head->next;
        head->next = prev;
        prev = head;
        head = next;
    }
    return prev;
}

合并两个有序链表

已知一个节点,怎么在O(1)时间内将该节点从链表中删除(答了将它后面的节点的值赋给他,然后将它后面的节点删除)

怎么将一个二叉排序树转换成双链表

判断单链表中是否有环

bool IsLoop(node *head, node **start)//判断链表是否存在环形链表,start为回环开始节点的地址
{
    node *p1 = head, *p2 = head;
    if (head == NULL || head->next == NULL)//head为NULL或者链表为空时返回false
    {
        return false;
    }
    do
    {
        p1 = p1->next;//p1走一步
        p2 = p2->next->next;//p2走两步
    } while (p2 && p2->next && p1 != p2);
    if (p1 == p2)
    {
        *start = p1;//p1为回环开始节
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值