算法
文章平均质量分 98
ncepu_Chen
这个作者很懒,什么都没留下…
展开
-
leetcode004:寻找两个正序数组的中位数_二分法
leetcode04:寻找两个正序数组的中位数解法题目思路暴力思路: 将两个数组先合并,再求中位数.暴力思路2: 将所有元素分为两部分二分法: 借助数组的有序性,减少尝试次数题目4. 寻找两个正序数组的中位数给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则原创 2020-07-10 15:16:32 · 618 阅读 · 0 评论 -
九章算法01:二分法
九章算法01:二分法九章算法01:二分法二分法第一重境界: 套模板二分法第二重境界: 找OOXX二分法第二重境界: 二分位置九章算法01:二分法二分法第一重境界: 套模板public class Solution { /** * @param nums an integer array sorted in ascending order * @param target an integer * @return an integer */ pu原创 2020-07-10 12:34:49 · 875 阅读 · 4 评论 -
算法学习14: 线段树
算法学习13: 线段树线段树要解决的问题线段树的结构线段树要解决的问题线段树要解决的问题是: 在一个实时更新的数组中查询区间和.若所查询的数组为静态数组,则此问题只需要使用数组前缀和既能解决.线段树的结构线段树是一种平衡二叉树,其每个节点存储数组中一段区间和.其左子节点存储区间左半部分和;其右子节点存储区间右半部分和.因为线段树是一个平衡二叉树,虽然不是完全二叉树,但是可以像完全二叉树...原创 2020-05-21 10:51:54 · 1053 阅读 · 1 评论 -
算法学习13: Morris遍历
Morris遍历树常见的非递归遍历方法,其空间复杂度均为O(h)h为树的高度Morris遍历做到了 使遍历过程的空间复杂度 真的降低为O(1)其思路: 利用树的空闲的空间(如,叶节点指向的虽为null,但是在内存中依旧为其分配了空间)morries遍历步骤...原创 2019-06-11 16:37:48 · 550 阅读 · 0 评论 -
算法学习12: 单调队列和单调栈
asdasdas窗口内最大值以及最小值的更新结构(单调双向队列)题目:有一个整型数组arr原创 2019-04-21 22:12:01 · 662 阅读 · 3 评论 -
算法学习11: BFPRT算法
算法学习11: BFPRT算法问题: 在一个无序数组中,找到第k小的数一种足够优秀的算法优劣分析:BFPRT算法问题: 在一个无序数组中,找到第k小的数一种足够优秀的算法随机选数组中的一个数,对它做荷兰国旗问题: 小于的放左边,等于的放中间,大于的放右边若所求的k位于等于区域,则直接返回若所求的k位于大于或小于区域,则对该区域再次进行荷兰国旗问题优劣分析:好的情况是: 若每次选的特别...原创 2019-04-13 20:24:11 · 266 阅读 · 0 评论 -
算法学习10:字符串算法(KMP算法和Manacher算法)
算法学习10: 字符串算法KMP算法KMP算法解决包含子串问题普通算法: 对长串的每个位都从头开始匹配短串的所有位KMP算法: 让前边匹配过的信息指导后边步骤:对短串进行处理 :先找到 每一个字符 前边字符串 最长前缀 和 最长后缀 的匹配长度(可以有交叉),首个字符串前面没有字符,因此取0.对开始匹配若长串匹配了子串前几位 ,直到某一位不等,其前边的位都想等,因此将短串...原创 2019-04-09 15:33:37 · 822 阅读 · 0 评论 -
算法学习09:图
算法学习09:图图的表示方式图的表示方式邻接表法邻接矩阵法有向图和无向图无所谓,都能表示原创 2019-03-26 15:55:29 · 391 阅读 · 2 评论 -
算法学习08:动态规划
算法学习08:动态规划递归与动态规划递归与动态规划递归问题求n!的结果汉诺塔问题打印一个字符串的全部子序列(包括串)打印一个字符串的全部排列暴力递归转换成动态规划最小路径和数组累加和背包问题递归与动态规划动态规划本身就是暴力递归的优化,是一种用空间换时间的策略递归与动态规划暴力递归:把问题转化为规模缩小了的同类问题的子问题有明确的不需要继续进行递归的条件(base case)有当...原创 2019-03-17 20:23:15 · 366 阅读 · 0 评论 -
算法学习07:贪心算法
介绍前缀树何为前缀树? 如何生成前缀树?例子:一个字符串类型的数组arr1,另一个字符串类型的数组arr2。加入"abc",“bce”,“abd”",“bef”用途:查询以&amp原创 2019-03-17 12:12:07 · 236 阅读 · 0 评论 -
算法学习06: 前缀树
算法学习06: 前缀树前缀树(Trie树)前缀树的用途前缀树的特点前缀树的实现前缀树(Trie树)前缀树(Trie树)每个节点存储一个字符,从根节点向下对应一个字符串的前缀.前缀树的用途查询以某字符串开头的字符串: 可以实现,直接从根节点向下撸查询是否存在"be"这个字符串? 原始的前缀树不能判断,“bef"会覆盖"be”,因此给节点加一个数据项,表示有多少字符串以此字符结尾,这样就...原创 2019-03-16 12:59:46 · 720 阅读 · 0 评论 -
算法学习03:栈和队列
算法学习03:栈和队列用数组结构实现大小固定的队列和栈用数组结构实现大小固定的队列和栈栈结构很好实现,准备变量index,指向栈顶当压入一个数,index++当弹出一个数,index–越界条件: index超了...原创 2019-03-16 23:46:42 · 524 阅读 · 0 评论 -
算法学习05:哈希&并查集
算法学习05:哈希认识哈希函数和哈希表设计RandomPool结构认识哈希函数和哈希表经典哈希函数:输入域无穷大的,输出域有穷尽的,输入参数固定时,返回值一定是一样的输入值不同时,有可能得到相同的返回值,(哈希碰撞)哈希函数的离散性:给我很多不同的书的话,我将在整个s域上均匀返回其输出值设计RandomPool结构【题目】 设计一种结构,在该结构中有如下三个功能:insert(k...原创 2019-03-15 12:13:02 · 540 阅读 · 0 评论 -
算法学习04:树
算法学习04:树树的遍历二叉树的递归遍历二叉树的非递归遍历前序遍历中序遍历后序遍历二叉树中的后继节点和前驱节点二叉树的序列化和反序列化[leetcode297](https://leetcode.com/problems/serialize-and-deserialize-binary-tree/)二叉树的套路化问题: 递归函数很好用判断一棵二叉树是否是平衡二叉树树的遍历二叉树的递归遍历//...原创 2019-03-10 23:17:55 · 309 阅读 · 0 评论 -
算法学习02: 各种排序算法及其思想
算法学习2: 各种排序算法排序算法冒泡排序选择排序插入排序排序算法冒泡排序每一轮遍历数组将最大的数沉到已排序部分最后一位public static void bubbleSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int e = arr.length - 1; e &am原创 2019-03-01 23:28:42 · 660 阅读 · 0 评论 -
算法学习01: 时间复杂度
算法学习1:时间复杂度&各种排序算法认识时间复杂度算法复杂度分析对数器的概念和使用排序算法冒泡排序选择排序插入排序递归的时间复杂度分析递归行为时间复杂度通式--master公式: T(N) = a\*T(N/b) + O(n^d^)认识时间复杂度算法复杂度分析一个有序数组A,另一个无序数组B,请打印B中的所有不在A中的数,A数组长度为N,B数组长度为M.算法流程1:对于数组B中...原创 2019-03-01 13:38:35 · 845 阅读 · 0 评论