• 数据结构及算法知识点与题目整理(答案慢更)


    本篇博文将对数据结构及算法的常见的题目进行总结,适合作为工作面试、考研机试与复试、自我检验、期末考试等的一份参考资料,囊括的知识点可能不会很全面,题目和答案都会在日后慢慢更新。


    栈和队列

    • 两个栈模拟一个队列
      – 思路:栈1为入队,栈顶表示队尾;栈2为出队,栈顶表示队首。
      入队直接入栈1;出队时,如果栈2不为空,则直接弹出栈首,如果栈2里面没有元素,则将栈1的元素依次弹出并压入栈2。入队时若栈1已满且栈2为空(栈2必须为空时才可以),则可以将栈1元素全部入栈2。

    • 两个队列模拟一个栈
      – 注意:用队列模仿栈和用栈模仿队列是不一样的!!!
      略一思考就会知道,用两个栈模仿队列有点负负得正的意思,但是用队列模仿栈的话,这种方法肯定就行不通。那么怎么办呢?请看 -> https://www.cnblogs.com/DHUtoBUAA/p/7389076.html

    • 堆和栈的区别
      – 堆是满足一定限制的树形结构(最大堆、最小堆)
      – 栈是元素有先进先出顺序的线性结构

    • 栈应用于括号匹配

    • 栈里找最小值 -> https://blog.csdn.net/qq_32623363/article/details/87894111



    数组、矩阵和广义表


    • 给定一棵树的两个节点,求最近的公共祖先节点
    • 树的定义;二叉树;满二叉树;完全二叉树;二叉排序树;平衡二叉树;
    • 树转换为二叉树
    • 哈弗曼树与哈夫曼编码
    • 二叉树删除节点
    • 二叉排序树删除节点(涉及“排序”)
    • 二叉树任意两个节点间的最大距离
    • 树的前序中序后序
    • 给出先序、中序,如何构造二叉树
    • 森林转换为二叉树

    • 怎么判断一个图中是否存在环?
      – 无向图:一直删除度为1的节点并更新,如果剩下度为2的节点,则有环
      – 有向图:拓扑排序,能够拓扑排序的就没有环。

    排序

    • 插入排序
      – 直接插入排序
      – 折半插入排序
      – 希尔排序(缩小增量排序)

    • 交换排序
      – 冒泡排序
      – 快速排序

    • 选择排序
      – 简单选择排序
      – 堆排序
      – 归并排序
      – 基数排序

    • 外部排序
      – 置换-选择排序
      – 最佳归并树
      – 败者树

    • 上述各种排序算法的实现、及复杂度(最好、最坏情况)、稳定性

    • 每轮排序都会确定一个最终位置:冒泡,快排,选择排序,堆排序

    • 1000个数里找出最小的100个(最小堆)

    • 二叉排序树删除节点

    • 二叉排序树有两个节点交换了位置,怎么找出来

    • 怎么把一颗二叉排序树变成双向链表

    • 链表排序


    查找

    • 二叉搜索树怎么插入结点
    • 红黑树
    • B-树与B+树
    • 链表如何使用二分查找
    • 哈希表最坏情况下相当于什么?
      – 复杂度为哈希表长度N,相当于一个N个长度的线性表
    • treemap和hashmap(java的知识了)
    • 哈希算法的平均查找长度(ASL)
    • 无序表找到一个树的时间复杂度
    • 哈希查找的几种冲突及解决办法

    算法题

    • 汉诺塔
    • 最大子串和(属于知识点:“串”)
    • 最长公共子序列(属于知识点:“串”)
    • 上楼梯(1步或2步)
    • 最长对称子串(属于知识点:“串”)
    • 合并有序链表 -> https://blog.csdn.net/qq_32623363/article/details/87885652
    • 最长无重复字符子串(属于知识点:“串”)
    • 螺旋矩阵(属于知识点:“数组、矩阵和广义表”)
    • 解释递归和递归的实现:递归包括两个部分:递归部分和终止条件
    • 有序数组中找三个数之和为x
    • 无序数组中只有一个出现一次的数,其余的都出现两次及以上,找出这个数
    • 判断链表有没有环,如果有环,则找出环的入口 -> https://blog.csdn.net/qq_32623363/article/details/87890240
    • 两个单链表判断是否相交 -> https://blog.csdn.net/qq_32623363/article/details/87885938
    • 最大矩阵和(属于知识点:“数组、矩阵和广义表”)
    • 最大字段和
    • 什么是深度优先、广度优先
    • 贪心算法举例
    • 怎么把一颗二叉排序树变成双向链表(属于知识点:“排序”)
    • BP算法(了解即可)
    • 链表排序(属于知识点:“排序”)
    • 三角形给坐标,求交点
    • n个不同字符的所有全排列
  • 相关阅读:
    第一次代码和思路
    人生道路上的三导师
    introduce myself
    币值转换
    HTTP中GET与POST的区别
    Quartz中时间表达式的设置-----corn表达式
    smartGit30天试用过期
    Zookeeper相关
    maven创建spring项目之后,启动报错java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoade
    tomcat识别不出maven web项目
  • 原文地址:https://www.cnblogs.com/yinyoupoet/p/13287449.html
Copyright © 2020-2023  润新知