算法学习
文章平均质量分 90
l577217
丁工人
展开
-
KMP算法
一、字符串匹配场景KMP算法可以解决以字符串匹配为模型的问题,算法应用场景非常广泛,并不仅仅限于文本的匹配。以简单的字符串匹配为例,现有两个链分别为source和target,要在Source链中匹配Target链,很容易观察出出从source链下标10的位置可以成功匹配,如下图所示: 二、非KMP算法对此类问题的求解方式在字符串匹配问题中,最直观的想法就是,Sou...原创 2018-05-19 20:44:51 · 12379 阅读 · 1 评论 -
堆排序
一、预备知识-堆堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大根堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小根堆。如下图:通过图可以比较直观的看出大根堆和小根堆的特点,需要注意的是:这种结构是对父节点-左/右孩子...原创 2018-05-31 00:18:34 · 8648 阅读 · 9 评论 -
二叉树层次、先根序、后根序、打印操作
定义节点类package pri.lr.java_tools.trees;public class TreeNode<T> { private T value; private TreeNode<T> parent; private TreeNode<T> leftChild; private TreeNode<T> rightCh...原创 2018-07-25 19:11:07 · 568 阅读 · 0 评论 -
LeetCode-寻找两有序数组中位数
算法描述给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则...原创 2019-04-08 23:41:18 · 188 阅读 · 0 评论