/Data_Structure_Exercises

LeetCode刷题记录、《剑指Offer》书中相关面试题及其他常见算法的Python实现。

Primary LanguageJupyter Notebook

Data_Structure_Exercises

算法与数据结构相关练习

分类索引

面试题_数字表示剑指offer第二版的题号,四位数字表示leetcode题库的题号,其他的在文件夹其他常见算法题中。

其中《剑指Offer》书中相关试题的Python实现主要参考《剑指offer(第二版)》和MKYAN的博客

哈希表:

  • 面试题50:第一个只出现一次的字符

链表:

  • 面试题06:从尾到头打印链表 (单向链表的增删改查,栈,递归)
  • 面试题18:删除链表的节点(O(1)内删除节点,python函数的引用传递机制)
  • 面试题22:链表中倒数第k个节点(代码的鲁棒性(空指针,越界输入等),一次使用多个指针遍历链表)
  • 面试题23:链表中环的入口节点
  • 面试题24:反转链表(提前想好测试用例,注意其递归实现)
  • 面试题25:合并两个排序的链表
  • 面试题35:复杂链表的复制(深拷贝、浅拷贝,分解复杂问题,遍历链表时的边界条件(用node.next当条件遍历时最后一个节点不会被遍历到),复制不要修改原对象)
  • 面试题36:二叉搜索树与双向链表
  • 面试题52:两个链表的第一个公共节点(栈的特点,设置多个指针)
  • 面试题62:圆圈中最后剩下的数字

二叉树:

  • 二叉树的七种遍历方式
  • 面试题07:重建二叉树(二叉树前序、中序、后序、层序遍历,复杂问题分解,递归的出口)
  • 面试题08:二叉树的下一个节点(二叉树的中序遍历,通过画图和举例解决复杂问题)
  • 面试题26:树的子结构(二叉树的前序遍历,递归)
  • 面试题27:二叉树的镜像
  • 面试题28:对称的二叉树
  • 面试题32:从上到下打印二叉树
  • 面试题33:二叉搜索树的后序遍历序列
  • 面试题34:二叉树中和为某一值的路径
  • 面试题37:序列化二叉树
  • 面试题54:二叉搜索树的第k大节点
  • 面试题55:二叉树的深度

堆栈、队列:

  • 面试题09:用两个栈实现队列(用两个队列实现栈)
  • 面试题30:包含min函数的栈
  • 面试题31:栈的压入弹出序列

查找、排序:

  • 面试题03:数组中重复的数字(一维数组,哈希表,二分查找)
  • 面试题04:二维数组中的查找(二维有序数组,查找顺序)
  • 面试题11:旋转数组的最小数字
  • 面试题39:数组中出现次数超过一半的数字(快排,第k小的数问题)
  • 面试题40:最小的k个数(冒泡,快排,最大堆的调整)
  • 面试题53:在排序数组中查找数字

递归-回溯法:

动态规划:

滑动窗口:

重叠区间:

其他: