摘要:本系列博客是LeetCode刷题笔记。打家劫舍(House Robber)是LeetCode上比较典型的一个题目,涉及三道题,求在不触动警报装置的情况下,能够偷窃到的最高金额,主要解题思想是动态规划,将三道题依次进行记录。 阅读全文
posted @ 2019-07-15 12:13 gzshan 阅读 (399) 评论 (0) 编辑
摘要:二叉树是非线性结构,每个结点会有零个、一个或两个孩子结点,一个二叉树的遍历序列不能决定一棵二叉树,但某些不同的遍历序列组合可以惟一确定一棵二叉树。给定一棵二叉树的前序(后序)遍历序列和中序遍历序列可以惟一确定一棵二叉树的结构。 阅读全文
posted @ 2019-07-14 20:25 gzshan 阅读 (176) 评论 (0) 编辑
摘要:二叉树的层序遍历(也叫广度优先遍历)的要求是:按二叉树的层序次序(即从根结点层至叶结点层),同一层中按先左子树再右子树的次序遍历二叉树。层次遍历衍生出的问题有:按行打印、之字形打印、左右视图等等,主要思想是借助队列实现。 阅读全文
posted @ 2019-07-12 15:41 gzshan 阅读 (310) 评论 (0) 编辑
摘要:通过前面对map端、reduce端以及整个shuffle端工作流程的介绍,我们已经了解了MapReduce的并行运算模型,基本可以使用MapReduce进行编程,那么MapRecude究竟是如何执行的,从map到shuffle,再到reduce的这一套完整的计算过程是如何调度的呢?这就是MapReduce的作业运行机制。 阅读全文
posted @ 2019-07-11 15:24 gzshan 阅读 (79) 评论 (0) 编辑
摘要:MapReduce主要用于面向大规模数据集的并行计算,需要重点了解MapReduce的并行编程模型和运行机制。MapReduce计算模型主要由三个阶段构成:Map、shuffle、Reduce。Map和Reduce操作需要我们自己定义相应Map类和Reduce类。而shuffle则是系统自动帮我们实现的,是MapReduce的“心脏”,是奇迹发生的地方。 阅读全文
posted @ 2019-07-10 09:49 gzshan 阅读 (141) 评论 (0) 编辑
摘要:MapReduce是一个用于大规模数据(大于1TB)处理的分布式计算模型、编程模型,它最初是由Google设计并实现的,在Google提出时,给它的定义是:Map/Reduce是一个编程模型(programming model),是一个用于处理和生成大规模数据集(processing and generating large data sets)的相关的实现。 阅读全文
posted @ 2019-07-09 17:55 gzshan 阅读 (132) 评论 (0) 编辑
摘要:动态规划(dynamic Programming)主要解决的问题:多阶段决策过程最优化, 其主要的思想是将最优化决策过程分为若干个互相联系的阶段,每个阶段需要作出一个决策,并且当前阶段的决策会影响下一阶段的决策,从而影响到整个过程的活动路线。 阅读全文
posted @ 2019-07-04 22:03 gzshan 阅读 (258) 评论 (0) 编辑
摘要:本系列博客为LeetCode的刷题笔记。给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。分成两部分,灵活使用哈希表的查找优势。 阅读全文
posted @ 2019-07-03 23:26 gzshan 阅读 (37) 评论 (0) 编辑
摘要:本系列博客为LeetCode的刷题笔记。给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。 阅读全文
posted @ 2019-07-03 22:46 gzshan 阅读 (59) 评论 (0) 编辑
摘要:本系列博客为LeetCode的刷题笔记。给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。 阅读全文
posted @ 2019-07-03 16:13 gzshan 阅读 (79) 评论 (0) 编辑