Leetcode 101.对称二叉树 Posted on 2019-02-11 | 101. 对称二叉树题目给定一个二叉树,检查它是否是镜像对称的。1234567891011121314例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称 ... Read more »
Leetcode 700.二叉搜索树中的搜索 Posted on 2019-02-11 | 700. 二叉搜索树中的搜索题目给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。1234567891011121314151617例如,给定二叉搜索树: 4 / \ ... Read more »
Leetcode 617.合并二叉树 Posted on 2019-02-08 | 617.合并二叉树题目给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。 示例 1:12345678910 ... Read more »
数据结构——二叉树的类实现 Posted on 2019-02-07 | 遍历算法深度优先遍历先序遍历递归遍历123456def preorder(t,proc): if not t: return proc(t.data) preorder(t.left,proc) preorder(t.right,proc) 非递归遍历在先序遍历 ... Read more »
分治策略之最大子数组问题 Posted on 2019-02-06 | 最大子数组思路使用分治策略意味着将子数组划分为两个规模尽量相等的子数组。也就是说需要找到子数组的中央位置mid。数组A[low…high]的任何连续子数组或最大子数组A[i…j]所处的位置必然是一下三种情况之一: 完全位于左子数组A[low…mid]中 完全位于右子数组A[mid+1…high]中 ... Read more »
分治策略 Posted on 2019-02-06 | 最大子数组问题思路暴力求解方法尝试每对可能的买进和卖出日期组合,只要卖出日期在买入日期之后即可。n天中共有$C_n^2$种日期组合。日期组合复杂度$C_n^2=\Theta(n^2)$,处理每对日期所花费的时间至少是常量,因此这种方法的运行时间是$\Omega(n^2)$ 分治策略目的寻找一段日期, ... Read more »
Leetcode-977 Posted on 2019-02-02 | 题目给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 1234567示例 1:输入:[-4,-1,0,3,10]输出:[0,1,9,16,100]示例 2:输入:[-7,-3,2,3,11]输出:[4,9,9,49,121] 提示:1 <= A. ... Read more »
Algorithm-Sort Posted on 2019-02-02 | 比较排序:插入排序、归并排序、堆排序、快速排序 线性时间排序排序算法的下界 在最坏的情况下,任何比较算法都需要做$\Omega(n \lgn)$ 堆排序和归并排序都是渐进最优的比较排序算法 计数排序基本思想:假设输入数据都属于一个小区间内的整数。对每一个输入元素x,确定小于x的元素个数 Pytho ... Read more »
QuickSort Posted on 2019-02-01 | 快速排序时间复杂度分析最坏情况划分当划分产生的两个子问题分别包含了n-1和0个元素时,快速排序的最坏情况发生。不妨假设算法的每一次递归中都出现了这种不平衡划分。 划分的操作时间复杂度是O(n) 对大小为0的数组进行递归调用回直接返回,时间复杂度是T(0)=1 算法运行时间的递归式可以表示为 ... Read more »