
算法&数据结构
MustangJy
这个作者很懒,什么都没留下…
展开
-
算法之动态规划(一) 如何获得最多的年终奖
预备知识:动态规划:动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子...转载 2018-12-31 16:57:33 · 449 阅读 · 0 评论 -
算法之动态规划(二) 爬楼梯与抢房子
爬楼梯问题假设你正在爬楼梯。需要 爬n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶?思路分析:从动态规划的角度,这个问题的关键在于找出能够推出结果的一个“状态”,每一步的“状态”都可以由之前的“状态”锁推出。由于每一步可以爬1或2个台阶,那么,我到达第n(n>2)阶,第一种可能就是我从第n-2阶爬了两层到的,第二种可能就是我从n-1阶爬了一层...原创 2019-01-24 00:40:05 · 352 阅读 · 0 评论 -
数据结构之树——二叉查找树、2-3树、2-3-4树、红黑树、B树、B+树及其关系
前言对于大量的输入数据,链表的线性访问时间太慢,不宜使用。由此,其他的更高效的数据结构被提出,二叉查找树是其中重要的一个。二叉查找树是两种库集合类TreeSet和TreeMap实现的基础,应用很广泛。在计算机科学中树(tree)是非常有用的抽象概念。树的定义定义树的一种自然的方式是递归的方式。一棵树是一些节点的集合,这个集合可以是空集;若不是空集,则树由称作根(root)的节点r与...原创 2019-02-20 19:35:34 · 804 阅读 · 0 评论 -
算法之动态规划(三) 小Q的歌单_腾讯笔试编程题
问题描述:小Q有X首长度为A的不同的歌和Y首长度为B的不同的歌,现在小Q想用这些歌组成一个总长度正好为K的歌单,每首歌最多只能在歌单中出现一次,在不考虑歌单内歌曲的先后顺序的情况下,请问有多少种组成歌单的方法。输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含一个整数,表示歌单的总长度K(1<=K<=1000)。接下来的一行包含四个正整数,分别表示歌的第一种长度...原创 2019-04-04 21:21:31 · 636 阅读 · 0 评论 -
非递归:二叉树带权路径和 && 遍历二叉树
写在前头的总结下面的先序中序后序遍历以及二叉树的带权路径的解法基本可以囊括绝大多数与二叉树相关的问题,为了方便记忆,在写的时候都用了两个嵌套的while循环,省得到时候再跟while里套if else的记混~首先二叉树的先序、中序、后序遍历在这篇博客里写的很清楚,尤其是后续遍历,思路很巧妙:后序遍历的非递归版本是最有技巧性的,难度相对高一点,但其实是可以转换成前序遍历的。后序遍历...原创 2019-04-21 00:52:35 · 684 阅读 · 0 评论 -
约瑟夫环问题 —— 递归法的简单易懂的解释
最近看了大佬的一篇博客:一行代码解决约瑟夫环问题 前面两个方法都看懂了,比较简单,但是最后一个只用一行代码的解法,实在是没有看懂,但是根据大佬的思路,我也做出了自己的解释,虽然在简洁性上不如大佬的一行完毕,但是整个思路不是很难懂,主要是记忆起来比较方便。大家可以先尝试看看大佬解法。问题描述编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,...原创 2019-07-22 18:17:12 · 1451 阅读 · 0 评论