自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 组合总和 III(力扣第216题)

题目:  找出所有相加之和为n 的k个数的组合。组合中只允许含有 1 -9 的正整数,并且每种组合中不存在重复的数字。说明:  所有数字都是正整数。  解集不能包含重复的组合。示例:输入: k = 3, n = 7输出: [[1,2,4]]分析:  明确题目的限制条件:1、组合中只允许存在1-9的数字;2、组合中元素的个数是k个;3、k个1-9范围内的数相加之和为n;4、组合中的元素不允许重复  可见,限制条件有很多,还是采用DFS和回溯的方法求解,只不过现在...

2020-07-19 19:20:22 282

原创 组合总和 II(力扣第40题)

题目:给定一个数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[[1, 7],[1, 2, 5],[2, 6],[1, 1, 6]]分析:主要对比一...

2020-07-10 00:08:42 232

原创 组合总和 I(力扣第39题)

题目:给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的数字可以无限制重复被选取。说明:所有数字(包括target)都是正整数。解集不能包含重复的组合。示例:输入: candidates = [2,3,6,7], target = 7,所求解集为:[ [7], [2,2,3]]分析:  给定的数组中的元素是不重复的,但是数组中的元...

2020-07-10 00:08:00 181

原创 组合(力扣第77题)

题目:给定两个整数n和k,返回 1 ...n中所有可能的k个数的组合。示例:输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]分析:  这是一个组合问题,所以结果顺序不同并不会影响结果,不同的结果组合中构成的元素成分是一样的那么这些结果组合就是相同的,同时题目也规定了搜索路径的长度,搜索的长度等于规定长度,那么搜索随即终止。那么首先,想到的就是利用DFS和回溯的思想解...

2020-07-07 12:42:05 380

原创 使用MapReduce解决蚂蚁森林第二题

问题:查询user_low_carbon表中每日流水记录,条件为:  用户在2017年,连续三天(或以上)的天数里,每天减少碳排放(low_carbon)都超过100g的用户低碳流水。  需要查询返回满足以上条件的user_low_carbon表中的记录流水。例如用户u_002符合条件的记录如下,因为2017/1/2~2017/1/5连续四天的碳排放量之和都大于等于100g:seq(key) user_id data_dt low_carbonxxxxx10 u_002 2017

2020-07-06 15:58:38 909

原创 全排列 II(力扣第47题)

题目:给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]分析:  这个题和全排列一的不同之处在于,它给定的一组元素含有重复的元素存在,那么我们进行深度递归搜索的时候,选择下一步搜索的元素的时候就要修改原先再全排列一中的判断条件了。那么满足什么条件,才能作为当前元素的下一步搜索选择呢?  首先我们从最开始进行分析,给定一组带有重复的元素,一个含有n个,最开始的可选的元素个数为去

2020-07-06 09:37:48 192

原创 二叉树的所有路径(力扣257题)

题目:给定一个二叉树,返回所有从根节点到叶子节点的路径。说明:叶子节点是指没有子节点的节点。示例:输入: 1 / \2 3 \ 5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3分析:求出所有的路径,本质还是递归回溯,遍历所有可能的从根节点到叶子节点的路径,由于是二叉树的缘故,所以每次向下搜索时,可选的走向就只有两个,左孩子和右孩子,因为是求所有的路径.

2020-07-05 21:44:49 125

原创 全排列(力扣第46题)

题目:给定一个 没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]分析:  求给定一组数的全排列,也就是排列组合问题,所以属于Backtracking(回溯)问题,通过DFS解决,只不过需要注意的是,我们一般使用DFS的时候都会设置一个访问标记的数组,用于保证深度递归的过程中,某一个元素不会被重复访问,但是由于现在我们要求的是排列组合问题,所以我

2020-07-05 21:30:12 151

原创 单词搜索(力扣第79题)

题目:  给定一个二维网格和一个单词,找出该单词是否存在于网格中。  单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABCCED", 返回 true给定 word = "SEE", 返回 true给定 word =

2020-06-26 22:35:51 288

原创 Hive学习----查询操作练习一

题目一:我们有如下的用户访问数据 userId visitDate visitCount u01 2017/1/21 5 u02 2017/1/23 6 u03 2017/1/22 8 u04 2017/1/20

2020-06-25 20:26:27 263

原创 电话号码的字母组合(力扣第17题)

题目:给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].分析:  这里每一个数字可以认为代表一个点,而这个点是一个包含几个字母的集合,那么从一个数字到另一个数字本质就是寻求从这个数字包含的字母集合中挑选一个字母然后与下一个数字包含的字母集合挑选一个...

2020-06-24 23:35:45 178

原创 太平洋大西洋水流问题(力扣第417题)

题目:  给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界。规定水流只能按照上、下、左、右四个方向流动,且只能从高到低或者在同等高度上流动。请找出那些水流既可以流动到“太平洋”,又能流动到“大西洋”的陆地单元的坐标。提示:输出坐标的顺序不重要m 和 n 都小于150示例:给定下面的 5x5 矩阵:太平洋 ~ ~ ~ ~ ~ ~ 1 2 2 3 (5) *~ 3 2 3 (4) (4)

2020-06-23 22:50:01 255

原创 被围绕的区域(力扣第130题)

题目:给定一个二维的矩阵,包含'X'和'O'(字母 O)。找到所有被'X'围绕的区域,并将这些区域里所有的'O'用'X'填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:  被围绕的区间不会存在于边界上,换句话说,任何边界上的'O'都不会被填充为'X'。 任何不在边界上,或不与边界上的'O'相连的'O'最终都会被填充为'X'。...

2020-06-20 22:42:06 236

原创 朋友圈(力扣第547题)

题目:班上有N名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知A是B的朋友,B是C的朋友,那么我们可以认为A也是C的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个N * N的矩阵M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋友圈总数。示例:输入: [[1,1,0],[1,1,0],[0,0,1]]输出: 2 说明:已知学生0和学生1互为朋友,他们在一个

2020-06-19 20:29:42 748

原创 岛屿数量(力扣第200题)

题目:  给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例:输入:11110110101100000000输出: 1分析:  这个题和之前那个求最大岛屿面积的做法是一样的,只不过求的是所有岛屿的数量。其实就是求给的二维网格图中,连通分量的总数,那么我们就依次遍历二维数组中的每一个点,凡是值为1且未被访问过的点,都进行依.

2020-06-18 20:03:52 532

原创 岛屿的最大面积(力扣第695题)

题目:给定一个包含了一些 0 和 1 的非空二维数组grid 。一个岛屿是由一些相邻的1(代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)示例:[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0...

2020-06-17 22:45:01 447

原创 再论力扣第279题--完全平方数

题目:给定正整数n,找到若干个完全平方数(比如1, 4, 9, 16, ...)使得它们的和等于n。你需要让组成和的完全平方数的个数最少。示例1:输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4.示例2:输入: n = 13输出: 2解释: 13 = 4 + 9.分析:  之前曾做过一次这道题,当时是刚学了动态规划算法,然后正好拿这个题进行练习,通过定义一个状态转移数组,也顺利的解决了,但是经过力扣的测试,运行效率十分地的感人,运行时间长达...

2020-06-16 23:19:58 201

原创 单词接龙(力扣第127题)

题目:给定两个单词(beginWord和 endWord)和一个字典,找到从beginWord 到endWord 的最短转换序列的长度。转换需遵循如下规则:  每次转换只能改变一个字母。  转换过程中的中间单词必须是字典中的单词。说明:  如果不存在这样的转换序列,返回 0。  所有单词具有相同的长度。  所有单词只由小写字母组成。  字典中不存在重复的单词。  你可以假设 beginWord 和 endWord 是非空的,且二者不相同。示例1:输入:beginWor...

2020-06-16 22:34:21 254 1

原创 二进制矩阵中的最短路径(力扣第1091题)

题目:在一个N ×N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1)。一条从左上角到右下角、长度为 k 的畅通路径,由满足下述条件的单元格C_1, C_2, ..., C_k组成:  相邻单元格C_i 和C_{i+1}在八个方向之一上连通(此时,C_i 和C_{i+1}不同且共享边或角)  C_1 位于(0, 0)(即,值为grid[0][0])  C_k位于(N-1, N-1)(即,值为grid[N-1][N-1])  如果 C_i 位于(r, ...

2020-06-15 22:24:06 416

原创 除自身以外的乘积数组(力扣第238题)

题目  给你一个长度为n的整数数组nums,其中n > 1,返回输出数组output,其中 output[i]等于nums中除nums[i]之外其余各元素的乘积。示例:  输入: [1,2,3,4]  输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在O(n) 时间复杂度内完成此题。分析:  不能使用除法,而且时间复杂度是O(n...

2020-06-09 23:01:55 132

原创 MapReduce源码分析--Shuffle阶段

一、收集执行NewOutputCollector对象的write方法就开启了对map输出数据的收集过程:​ collector是一个MapOutputCollector类型的变量,它是实际执行收集数据功能的对象载体:private final MapOutputCollector<K,V> collector;​ 但是它的实际类型是一个MapOutputBuffer类型的对象,可以从debug时变量的类型信息里看到:​ 这是因为MapOutputBuffer实现了MapOutput

2020-06-08 18:26:44 228

原创 MapReduce源码分析--MapTask阶段

MapTask类继承自Task类,负责Map阶段的数据处理流程,它最主要的方法就是run(),这个方法用于执行当前的Map阶段的任务。作为命名作业的一部分运行此任务。此方法在子进程中执行,是调用用户提供的map,reduce等方法的方法。在这个run方法中,首先会发送task任务报告,与父进程做交流 :TaskReporter reporter = startReporter(umbilical);判断用的是新的MapReduceAPI还是旧的API ,waitForCompletion()就用sub

2020-06-07 20:08:24 198

原创 相遇问题(力扣第462题)

  试想两个人,在一条无限长的直线上的两个不同位置,两个人怎么做才能走最少的步数相遇,那就是两个面对面同时朝着对方走,就可以以最少的步数相遇。那么,来看一下这个题:题目:  给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1。 您可以假设数组的长度最多为10000。例如:输入:[1,2,3]输出:2说明:只有两个动作是必要的(记得每一步仅可使其中一个元素加1或减1): [1,2,3] => [2,2,3] =

2020-06-06 15:19:05 628

原创 多数元素(力扣169题)

题目:  给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。分析:  1、多数元素即在一组数中出现次数大于⌊ n/2 ⌋的元素  2、多数元素在这个数组中一定存在  这两个条件就决定了这种多数元素一定只可能是一种数,因为它出现的次数大于总数的一半,所以只可能是一种数,不可能是两种或者多种。解法:  1、哈希表  利用哈希表结构,以数组元素值作为哈希表的key,出...

2020-06-06 15:16:43 519

原创 字符串加法(力扣第415题)

题目:给定两个字符串形式的非负整数num1 和num2,计算它们的和。注意:num1 和num2的长度都小于 5100.num1 和num2 都只包含数字0-9.num1 和num2 都不包含任何前导零。你不能使用任何內建 BigInteger 库,也不能直接将输入的字符串转换为整数形式。分析:没啥可分析的,和二进制加法那一道题的解题思想一样,从字符串的高位向低位逐位置进行计算,在单独用一个变量作为进位的标志位,然后开始进行计算。直接贴代码:class Solu...

2020-06-05 13:03:49 230

原创 二进制求和(力扣第67题)

题目:给你两个二进制字符串,返回它们的和(用二进制表示)。输入为非空字符串且只包含数字1和0。示例1:输入: a = "11", b = "1"输出: "100"示例2:输入: a = "1010", b = "1011"输出: "10101"分析:其实就是两个二进制数的加法运算,两个二进制数相加,首先设置一个进位标识符flag,初始值设置0。从低位到高位开始相加:  1、对应位置相加,然后再加上flag,三者之和设置为temp_sum,然后结果值的当前位为...

2020-06-04 12:43:54 238

原创 阶乘后的零(力扣第172题)

题目给定一个整数n,返回n! 结果尾数中零的数量。分析:  求尾数为0的个数,那就要分析如何才能使得尾数会有0,其实就是在求阶乘运算的过程中存在10这个因子,继续分解,实质就是存在2和5这两个因子,有多少个2*5,则结尾就会有多少个0,而2*5个的个数,其实受限于5的个数,因为2是一个较小的值,且是更多数的因子,因此对于0-n这些数中,能够分解出的5的个数一定是小于分解出的2的个数的。所以能够分解出多少个5,那么尾数就会有多少个0。  那么如何求出能够分解出的5的个数呢,我们来找一下规律..

2020-06-03 13:30:40 185

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除