算法
YCoder110
这个作者很懒,什么都没留下…
展开
-
分治法的几种写法(以归并排序为例)
递归函数式优点:便与描述和分析算法,代码简洁清晰,且具有一般性(*以SML语言为例*)fun mergeSort(L:int list) = let (L, R) = splitMid(L) (L', R') = (mergeSort(L) || mergeSort(R)) in merge(L', R') end说明:一般性:这里虽然使用 list 但实际上可以...原创 2020-02-16 15:16:26 · 329 阅读 · 0 评论 -
C语言快速实现优先队列(排雷)
写在前面C语言没有自带常用数据结构的库,所以当需要使用它们处理问题时必须自己实现它们。解题时快速并正确实现数据结构的ADT可以为我们节省宝贵的时间去解决真正的问题。本博客本更像是个人的排坑排雷笔记,讲解不全请见谅,但如果对你有一点启发那就再好不过了。优先队列为了简单起见,存放数据的结构使用数组。组织序号我们知道优先队列,也叫大(小)顶堆(默认为二叉堆)。堆是一棵完全二叉树,但实...原创 2020-02-16 00:31:47 · 637 阅读 · 0 评论 -
括号生成(时间复杂度篇)
写在前面算法的实现(代码)以及算法的正确性(和所需的理论知识)已经在括号生成(理论及实现篇)写到,如果你没有看过请先大略浏览一遍,以防直接阅读本篇造成的无上下文的体验。LeetCode官方题解对这两种算法的分析不仅有些简略而且不太严谨。现在以上一篇为基础,对闭合数和回溯法做算法复杂度分析。Cn=C0Cn−1+C1Cn−2+⋯+Cn−1C0,n≥1(**)C_n=C_0C_{n-1}+C...原创 2020-02-14 16:30:17 · 824 阅读 · 0 评论 -
正则表达式匹配(问题实质探讨)
题目给你一个字符串 s 和一个字符规律 p,请你来实现一个支持'.'和'*'的正则表达式匹配。 '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。说明:s可能为空,且只包含从a-z的小写字母。p可能为空,且只包含从a-z的小写字母,以及字符.和*。本质探讨及问题分析写在前面如果你觉得,“这题还要动态规划...原创 2020-02-10 19:51:44 · 240 阅读 · 0 评论 -
括号生成(结合Catalan数详细分析)
题目给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]PS:本题源自[leetcode 22]理论基础(Catalan数,卡特兰数)Catalan数列是序列C0,C1,C2,…Cn,…C_0, C_1...原创 2020-02-13 19:26:00 · 808 阅读 · 0 评论