
剑指offer
本专栏介绍常见的算法面试题,主要包括解题思路和python实现。
我是刘某某
机器学习小菜鸟一枚,加油加油加油
展开
-
剑指offer 之 约瑟夫环(孩子们的游戏,圆圈中最后剩下的)
约瑟夫环这道题做了很多次,但每次重新看的时候都感觉自己失忆了,所以这次必须记录一下!!! 题目 (来自牛客) 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....直原创 2020-06-20 17:00:59 · 235 阅读 · 0 评论 -
二叉树的遍历:先序、中序、后序 (递归)
class TreeNode: def __init__(self, val): self.val = val self.left = None self.right = None class BinaryTreeTraversal: def recuPreOrderTraversal(self, pRoot): ''' 递归先序遍历:读取根节点,然后分别读取左右子节点 ''' .原创 2020-05-15 22:10:05 · 260 阅读 · 0 评论 -
剑指offer 之 链表中环的入口节点
文章目录题目思路代码 题目 寻找链表中环的入口节点,如果有环返回入口节点,如果无环返回None。 思路 这道题分两步走: 判断链表是否有环: 两个指针,一快一慢,如果相遇了就说明有环,如果走到头了,就说明没环。很像小学的追及问题哈。 寻找环的入口节点: 这里有一种比较容易想到的方法就是我们再定义一个新的指针,从相遇的节点出发等到它回来,就可以知道环的长度m,然后再用两个指针从头节点出发,一个先走...原创 2020-04-28 18:20:56 · 157 阅读 · 0 评论 -
剑指offer 之 数据流的中位数
数据流中的中位数题目解题思路Python代码 题目 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 解题思路 我们的目标是找到数据的中位数,除此之外其它数据的排列顺...原创 2020-04-28 13:58:31 · 172 阅读 · 0 评论 -
剑指offer 之 二叉树树的镜像
这道题的解法是用递归的思想将每个非叶子节点的左右子树互换,思路非常简单。 class TreeNode: ''' 定义树结构 ''' def __init__(self, val): self.val = val self.left = None self.right = None class MirrorOf...原创 2020-04-24 18:27:44 · 121 阅读 · 0 评论 -
剑指offer 之 二维数组的查找
题目: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路: 从数组的右上角或左下角开始搜索,大于当前值,向下(右)移动;小于当前值向左(上)移动。 为什么要从右上角或左下角开始搜索呢?我们通常习惯于从左上角也就是数组的第一个元素开始搜索,也不...原创 2020-03-22 11:34:12 · 117 阅读 · 0 评论 -
剑指offer 之 二叉树中和为某一值的路径
输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 从根节点开始采用先序遍历的方式,找出子树中满足(expectNumber-root.val)的路径。 # -*- coding:utf-8 -*- # class TreeNode: # ...原创 2019-03-19 08:52:10 · 128 阅读 · 0 评论 -
剑指offer 之 复杂链表的复制
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) # -*- coding:utf-8 -*- # class RandomListNode: # def __init__(self, x): # self...原创 2019-03-19 09:30:47 · 106 阅读 · 0 评论 -
剑指offer 之 二叉搜索树与双向链表
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right...原创 2019-03-19 11:10:22 · 106 阅读 · 0 评论