
Algorithm
文章平均质量分 53
苦味代码
公众号:苦味代码
展开
-
数组区间和的一种变体
这组问题依然来自leetcode,题目的背景是这样的: 给定一个数组代表一个街上的所有人家,每个数字代表小偷可以从这家得到的钱数,并且侵入相连的两家都会导致他们报警,那么问题来了,这篇文章的题目应该是如何抢劫吗?不瞒您说,还真是。那怎么安排“做事”的顺序才能使得今晚得到的财富最多呢?如果允许连续抢劫,那不就是数组区间和的问题么(有关数组区间和的问题,见另一篇博客如何找到区间数组的最大和?最大积?),原创 2016-11-04 12:08:00 · 457 阅读 · 0 评论 -
如何合并两个已排序的表?
这里的表可以是数组或者是链表等,并且已经从小到大排好顺序,我们的任务就是将这两个表合并成一个表。原创 2016-10-26 16:08:42 · 693 阅读 · 0 评论 -
如何找到二叉树两个节点的最近公共双亲?
二叉树中两个节点的最近公共双亲(Lowest Common Ancestor)是所有这两个节点的双亲节点中离根节点最远的节点,如果其中一个节点是另一个节点的双亲节点,那么符合这个定义的节点就是这个双亲节点,如何快速简单的找到任意的两个节点的最近公共双亲节点是这里要讨论的话题。原创 2016-10-26 17:08:40 · 5515 阅读 · 0 评论 -
如何找到区间数组的最大和?最大积?
给定一个整数数组,需要找一个子数组,使得该子数组的和是所有的子数组里边最大的,或者该子数组相乘的积是所有的子数组中最大的。 先看前者,求和具有最优子结构,也就是说前n个元素的最大和子区间和前n+1个元素的最大和子区间是有关系的,如果我们用dp[k]记录前n个数组元素中的最大和,并且规定这个子区间的最后一个元素必须是n,那么当我们计算的数组长度扩展为k+1的时候就需要考量dp[k]了,如果原创 2016-10-26 21:59:28 · 1585 阅读 · 0 评论 -
如何用Boyer–Moore选举算法解决问题?
Boyer–Moore选举算法是一个经典的用于找一组元素中出现次数超过元素个数一半的算法,该算法有线性时间复杂度和常数空间复杂度,是从现实生活中的选举问题抽象出来的。原创 2016-10-27 11:25:13 · 624 阅读 · 0 评论 -
如何运用反向思维解决问题?
Codeforces Round #370 (Div. 2)C. Memory and De-Evolution 解题思路和两种实现,以及针对反向思考的一个拓展。原创 2016-09-27 15:59:44 · 874 阅读 · 0 评论 -
如何做大数乘法?
当运算的数据量超过语言自身的基本类型能表达的范围的时候就,那些内置的运算就没法进行了,需要我们另外想办法。如果给我们两个代表正整数的字符串,我们如何快速得到代表它们两个乘积的字符串呢?原创 2016-11-09 20:54:34 · 500 阅读 · 0 评论 -
浅说二叉树路径和
当我们沿着二叉树遍历的时候可以记录经过的节点,并且把这些节点的和加起来,这个和就是路径和。遍历的路径可以从根节点开始,也可以更加宽泛,从任何一个节点开始,只要方向是从双亲节点向孩子节点就行。与路径和最相关的问题就是找指定和的路径,如果从根节点开始,找一个二叉树中是否有路径的路径和与给定数字相同,应该怎么找呢,这个问题并不难,先看代码:public boolean hasPathSum(TreeNo原创 2016-11-02 19:37:49 · 443 阅读 · 0 评论 -
分享一个有趣的BUG
题目来源:Triangle 这道题目并不复杂, 要求求出一个数字组成的等腰三角形中从底到顶点的最小路径和,这里的路径的父子关系指的是三角形中的每个元素与下一层相邻的两个元素:[ [2], [3,4], [6,5,7], [4,1,8,3]]比如在上面的例子中第二行的第一个元素3可以和第三层的6, 5相通, 但是不能和7相通。方法一:写法上最简单, 时...原创 2018-04-08 16:20:46 · 1102 阅读 · 0 评论