自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hestyle的博客

hestyle便涨红了脸,额上的青筋条条绽出,争辩道,“Ctrl+C+V不能算抄…Ctrl+C+V!…程序员的事,能算抄么?”接连便是难懂的话,什么“移花接木”,什么“借鉴”之类,引得众人都哄笑起来。

  • 博客(77)
  • 收藏
  • 关注

原创 LeetCode 在线选举(hash表+二分搜索)

在选举中,第 i 张票是在时间为 times[i] 时投给 persons[i] 的。现在,我们想要实现下面的查询函数: TopVotedCandidate.q(int t) 将返回在 t 时刻主导选举的候选人的编号。在 t 时刻投出的选票也将被计入我们的查询之中。在平局的情况下,最近获得投票的候选人将会获胜。示例:输入:["TopVotedCandidate","q","q","q","...

2019-06-30 11:52:53 360

原创 LeetCode 单词子集(字符串处理)

我们给出两个单词数组 A 和 B。每个单词都是一串小写字母。现在,如果 b 中的每个字母都出现在 a 中,包括重复出现的字母,那么称单词 b 是单词 a 的子集。 例如,“wrr” 是 “warrior” 的子集,但不是 “world” 的子集。如果对 B 中的每一个单词 b,b 都是 a 的子集,那么我们称 A 中的单词 a 是通用的。你可以按任意顺序以列表形式返回 A 中所有的通用单词。...

2019-06-29 18:38:36 410

原创 LeetCode 仅仅反转字母(双指针)

给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。示例 1:输入:"ab-cd"输出:"dc-ba"示例 2:输入:"a-bC-dEf-ghIj"输出:"j-Ih-gfE-dCba"示例 3:输入:"Test1ng-Leet=code-Q!"输出:"Qedo1ct-eeLg=ntse-T!"提示:S.length ...

2019-06-28 23:12:06 324

原创 LeetCode 分割数组(标记法)

给定一个数组 A,将其划分为两个不相交(没有公共元素)的连续子数组 left 和 right, 使得:left 中的每个元素都小于或等于 right 中的每个元素。left 和 right 都是非空的。left 要尽可能小。在完成这样的分组后返回 left 的长度。可以保证存在这样的划分方法。示例 1:输入:[5,0,3,8,6]输出:3解释:left = [5,0,3],rig...

2019-06-27 21:12:28 858

原创 LeetCode 卡牌分组(hash表)

给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有 X 张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。示例 1:输入:[1,2,3,4,4,3,2,1]输出:true解释:可行的分组是 [1,1],[2,2],[3,3],[4,4]示例 2:输入:[1,1,1...

2019-06-26 21:36:36 428

原创 LeetCode 排序数组(八种常见排序算法)

给定一个整数数组 nums,将该数组升序排列。示例 1:输入:[5,2,3,1]输出:[1,2,3,5]示例 2:输入:[5,1,1,2,0,0]输出:[0,0,1,1,2,5]提示:1 <= A.length <= 10000-50000 <= A[i] <= 50000思路分析:\color{blue}思路分析:思路分析:排序问题是算法中最为经...

2019-06-25 21:05:39 3033 2

原创 LeetCode 最小差值II

给定一个整数数组 A,对于每个整数 A[i],我们可以选择 x = -K 或是 x = K,并将 x 加到 A[i] 中。在此过程之后,我们得到一些数组 B。返回 B 的最大值和 B 的最小值之间可能存在的最小差值。示例 1:输入:A = [1], K = 0输出:0解释:B = [1]示例 2:输入:A = [0,10], K = 2输出:6解释:B = [2,8]示例...

2019-06-24 15:26:12 675

原创 LeetCode 蛇梯棋(题意有点绕~)

在一块 N x N 的棋盘 board 上,从棋盘的左下角开始,每一行交替方向,按从 1 到 N*N 的数字给方格编号。例如,对于一块 6 x 6 大小的棋盘,可以编号如下:玩家从棋盘上的方格 1 (总是在最后一行、第一列)开始出发。每一次从方格 x 起始的移动都由以下部分组成:你选择一个目标方块 S,它的编号是 x+1,x+2,x+3,x+4,x+5,或者 x+6,只要这个数字 <...

2019-06-23 21:02:20 1870 1

原创 LeetCode 超级回文数(转换减小范围)

如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。现在,给定两个正整数 L 和 R (以字符串形式表示),返回包含在范围 [L, R] 中的超级回文数的数目。示例:输入:L = "4", R = "1000"输出:4解释:4,9,121,以及 484 是超级回文数。注意 676 不是一个超级回文数: 26 * 26 = 676,但是 26 不是回文...

2019-06-21 16:55:15 505

原创 LeetCode 最小差值 I

给定一个整数数组 A,对于每个整数 A[i],我们可以选择任意 x 满足 -K <= x <= K,并将 x 加到 A[i] 上得到B[i] = A[i] + x。在此过程之后,我们得到一些数组 B。返回 B 的最大值和 B 的最小值之间可能存在的最小差值。示例 1:输入:A = [1], K = 0输出:0解释:B = [1]示例 2:输入:A = [0,10], ...

2019-06-21 08:53:13 544

原创 C++ STL 算法库之max_element、min_element算法

max−element(begin,end,cmp)\color{blue}max_-element(begin, end, cmp)max−​element(begin,end,cmp)功能描述:返回容器[begin, end)段中最大元素所在的第一个迭代器。参数介绍:begin寻找范围的起始迭代器,end寻找范围的尾端迭代器的下一个迭代器,cmp比较函数,对于int、double等基本数据...

2019-06-20 21:33:50 1857

原创 LeetCode 按奇偶排序数组(双指针)

给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。你可以返回满足此条件的任何数组作为答案。示例:输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。提示:1 <= A.length <= 50000 <= A[i] <= 5000思...

2019-06-19 16:40:04 516

原创 LeetCode 水果成篮(滑动窗口)

在一排树中,第 i 棵树产生 tree[i] 型的水果。你可以从你选择的任何树开始,然后重复执行以下步骤:把这棵树上的水果放进你的篮子里。如果你做不到,就停下来。移动到当前树右侧的下一棵树。如果右边没有树,就停下来。请注意,在选择一颗树后,你没有任何选择:你必须执行步骤 1,然后执行步骤 2,然后返回步骤 1,然后执行步骤 2,依此类推,直至停止。你有两个篮子,每个篮子可以携带任何数量的...

2019-06-19 16:29:32 781

原创 LeetCode DI序列的有效排列(分治+动态规划)

我们给出 S,一个源于 {‘D’, ‘I’} 的长度为 n 的字符串 。(这些字母代表 “减少” 和 “增加”。)有效排列 是对整数 {0, 1, …, n} 的一个排列 P[0], P[1], …, P[n],使得对所有的 i:如果 S[i] == ‘D’,那么 P[i] > P[i+1],以及;如果 S[i] == ‘I’,那么 P[i] < P[i+1]。有多少个有效排列...

2019-06-19 15:27:17 7707 2

原创 LeetCode 最大为N的数字组合

我们有一组排序的数字 D,它是 {‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’} 的非空子集。(请注意,‘0’ 不包括在内。)现在,我们用这些数字进行组合写数字,想用多少次就用多少次。例如 D = {‘1’,‘3’,‘5’},我们可以写出像 ‘13’, ‘551’, ‘1351315’ 这样的数字。返回可以用 D 中的数字写出的小于或等于 N 的正整数的数目。示例...

2019-06-19 12:09:35 1072

原创 LeetCode 股票价格跨度

编写一个 StockSpanner 类,它收集某些股票的每日报价,并返回该股票当日价格的跨度。今天股票价格的跨度被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今天)。例如,如果未来7天股票的价格是 [100, 80, 60, 70, 60, 75, 85],那么股票跨度将是 [1, 1, 1, 2, 1, 4, 6]。示例:输入:["StockSpanner","...

2019-06-19 08:05:01 431

原创 LeetCode RLE迭代器

编写一个遍历游程编码序列的迭代器。迭代器由 RLEIterator(int[] A) 初始化,其中 A 是某个序列的游程编码。更具体地,对于所有偶数 i,A[i] 告诉我们在序列中重复非负整数值 A[i + 1] 的次数。迭代器支持一个函数:next(int n),它耗尽接下来的 n 个元素(n >= 1)并返回以这种方式耗去的最后一个元素。如果没有剩余的元素可供耗尽,则 next ...

2019-06-18 16:12:02 213

原创 LeetCode 有序队列(数学问题)

给出了一个由小写字母组成的字符串 S。然后,我们可以进行任意次数的移动。在每次移动中,我们选择前 K 个字母中的一个(从左侧开始),将其从原位置移除,并放置在字符串的末尾。返回我们在任意次数的移动之后可以拥有的按字典顺序排列的最小字符串。示例 1:输入:S = "cba", K = 1输出:"acb"解释:在第一步中,我们将第一个字符(“c”)移动到最后,获得字符串 “bac”。在...

2019-06-18 15:35:00 1013

原创 LeetCode 子数组按位或操作(蛮力法+剪枝)

我们有一个非负整数数组 A。对于每个(连续的)子数组 B = [A[i], A[i+1], …, A[j]] ( i <= j),我们对 B 中的每个元素进行按位或操作,获得结果 A[i] | A[i+1] | … | A[j]。返回可能结果的数量。 (多次出现的结果在最终答案中仅计算一次。)示例 1:输入:[0]输出:1解释:只有一个可能的结果 0 。示例 2:输入:[...

2019-06-18 14:53:43 455

原创 LeetCode 递增顺序查找树(中序遍历)

给定一个树,按中序遍历重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。示例 :输入:[5,3,6,2,4,null,8,1,null,null,null,7,9] 5 / \ 3 6 / \ \ 2 4 8 / / \ 1 7 9输出:[1,nul...

2019-06-17 19:01:15 446

原创 LeetCode 单调数列

如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。当给定的数组 A 是单调数组时返回 true,否则返回 false。示例 1:输入:[1,2,2,3]输出:true示例 2:输入:[6,5,4,...

2019-06-17 17:45:56 442

原创 LeetCode 最大频率栈(hash表+stack、优先队列)

实现 FreqStack,模拟类似栈的数据结构的操作的一个类。FreqStack 有两个函数:push(int x),将整数 x 推入栈中。pop(),它移除并返回栈中出现最频繁的元素。如果最频繁的元素不只一个,则移除并返回最接近栈顶的元素。示例:输入:["FreqStack","push","push","push","push","push","push","pop","pop...

2019-06-16 15:07:55 898

原创 LeetCode 所有可能的满二叉树(递归)

满二叉树是一类二叉树,其中每个结点恰好有 0 或 2 个子结点。返回包含 N 个结点的所有可能满二叉树的列表。 答案的每个元素都是一个可能树的根结点。答案中每个树的每个结点都必须有 node.val=0。你可以按任何顺序返回树的最终列表。示例:输入:7输出:[[0,0,0,null,null,0,0,null,null,0,0],[0,0,0,null,null,0,0,0,0],[0...

2019-06-16 11:03:16 898

原创 LeetCode 特殊等价字符串

你将得到一个字符串数组 A。如果经过任意次数的移动,S == T,那么两个字符串 S 和 T 是特殊等价的。一次移动包括选择两个索引 i 和 j,且 i % 2 == j % 2,交换 S[j] 和 S [i]。现在规定,A 中的特殊等价字符串组是 A 的非空子集 S,这样不在 S 中的任何字符串与 S 中的任何字符串都不是特殊等价的。返回 A 中特殊等价字符串组的数量。示例 1:输入...

2019-06-15 17:22:47 683

原创 LeetCode 三维形体的表面积

在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。请你返回最终形体的表面积。示例 1:输入:[[2]]输出:10示例 2:输入:[[1,2],[3,4]]输出:34示例 3:输入:[[1,0],[0,2]]输出:16示例 4:输入:[[1,1,1],[1...

2019-06-15 16:20:38 1326

原创 LeetCode 子序列宽度之和(公式递推法)

给定一个整数数组 A ,考虑 A 的所有非空子序列。对于任意序列 S ,设 S 的宽度是 S 的最大元素和最小元素的差。返回 A 的所有子序列的宽度之和。由于答案可能非常大,请返回答案模 10^9+7。示例:输入:[2,1,3]输出:6解释:子序列为 [1],[2],[3],[2,1],[2,3],[1,3],[2,1,3] 。相应的宽度是 0,0,0,1,1,2,2 。这些宽...

2019-06-15 15:30:36 616

原创 LeetCode 查找与替换模式(hash映射)

你有一个单词列表 words 和一个模式 pattern,你想知道 words 中的哪些单词与模式匹配。如果存在字母的排列 p ,使得将模式中的每个字母 x 替换为 p(x) 之后,我们就得到了所需的单词,那么单词与模式是匹配的。(回想一下,字母的排列是从字母到字母的双射:每个字母映射到另一个字母,没有两个字母映射到同一个字母。)返回 words 中与给定模式匹配的单词列表。你可以按任何...

2019-06-15 11:13:52 241

原创 LeetCode 根据前序和后序遍历构造二叉树(递归+图解)

返回与给定的前序和后序遍历匹配的任何二叉树。pre 和 post 遍历中的值是不同的正整数。示例:输入:pre = [1,2,4,5,3,6,7], post = [4,5,2,6,7,3,1]输出:[1,2,3,4,5,6,7]提示:1 <= pre.length == post.length <= 30pre[] 和 post[] 都是 1, 2, ..., pre...

2019-06-15 10:47:10 4515

原创 C++ STL 算法库之 lower_bound、upper_bound、binary_search算法

lower−bound、upper−bound、binary−search算法\color{blue}lower_ -bound、upper_-bound、binary_-search算法lower−​bound、upper−​bound、binary−​search算法 三者都定义在头文件<algorithm.h>中,都是基于“二分搜索”实现。注:\color{red}注:注:三者...

2019-06-14 21:41:38 693

原创 LeetCode 公平的糖果交换(二分法、hash表)

爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝拥有的第 i 块糖的大小,B[j] 是鲍勃拥有的第 j 块糖的大小。因为他们是朋友,所以他们想交换一个糖果棒,这样交换后,他们都有相同的糖果总量。(一个人拥有的糖果总量是他们拥有的糖果棒大小的总和。)返回一个整数数组 ans,其中 ans[0] 是爱丽丝必须交换的糖果棒的大小,ans[1] 是 Bob 必须交换的糖果棒的大小。如果有多个答案,...

2019-06-14 20:59:30 266

原创 LeetCode 鸡蛋掉落(最清晰的解法)

你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <= X &l...

2019-06-14 18:48:50 12218 12

原创 LeetCode 可能的二分法(深度优先搜索)

给定一组 N 人(编号为 1, 2, …, N), 我们想把每个人分进任意大小的两组。每个人都可能不喜欢其他人,那么他们不应该属于同一组。形式上,如果 dislikes[i] = [a, b],表示不允许将编号为 a 和 b 的人归入同一组。当可以用这种方法将每个人分进两组时,返回 true;否则返回 false。示例 1:输入:N = 4, dislikes = [[1,2],[1,3...

2019-06-14 15:38:18 849

原创 LeetCode 螺旋矩阵III(图解)

在 R 行 C 列的矩阵上,我们从 (r0, c0) 面朝东面开始这里,网格的西北角位于第一行第一列,网格的东南角位于最后一行最后一列。现在,我们以顺时针按螺旋状行走,访问此网格中的每个位置。每当我们移动到网格的边界之外时,我们会继续在网格之外行走(但稍后可能会返回到网格边界)。最终,我们到过网格的所有 R * C 个空间。按照访问顺序返回表示网格位置的坐标列表。示例 1:输入:R ...

2019-06-14 11:36:03 587

原创 LeetCode 两句话中的不常见单词(hash表)

给定两个句子 A 和 B 。 (句子是一串由空格分隔的单词。每个单词仅由小写字母组成。)如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的。返回所有不常用单词的列表。您可以按任何顺序返回列表。示例 1:输入:A = "this apple is sweet", B = "this apple is sour"输出:["sweet","sour"]...

2019-06-14 10:08:50 187

原创 LeetCode 三维形体投影面积

在 N * N 的网格中,我们放置了一些与 x,y,z 三轴对齐的 1 * 1 * 1 立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。现在,我们查看这些立方体在 xy、yz 和 zx 平面上的投影。投影就像影子,将三维形体映射到一个二维平面上。在这里,从顶部、前面和侧面看立方体时,我们会看到“影子”。返回所有三个投影的总面积。示例 1:...

2019-06-13 21:16:12 467

原创 LeetCode 细分图中的可到达结点(图)

从具有 0 到 N-1 的结点的无向图(“原始图”)开始,对一些边进行细分。该图给出如下:edges[k] 是整数对 (i, j, n) 组成的列表,使 (i, j) 是原始图的边。n 是该边上新结点的总数然后,将边 (i, j) 从原始图中删除,将 n 个新结点 (x_1, x_2, …, x_n) 添加到原始图中,将 n+1 条新边 (i, x_1), (x_1, x_2), (x_2...

2019-06-13 20:44:27 558

原创 LeetCode 救生艇(贪心策略+双指针)

第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit。每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。返回载到每一个人所需的最小船数。(保证每个人都能被船载)。示例 1:输入:people = [1,2], limit = 3输出:1解释:1 艘船载 (1, 2)示例 2:输入:people = [3,2,2,1], limit =...

2019-06-13 11:45:55 714

原创 LeetCode 索引处的解码字符串

给定一个编码字符串 S。为了找出解码字符串并将其写入磁带,从编码字符串中每次读取一个字符,并采取以下步骤:如果所读的字符是字母,则将该字母写在磁带上。如果所读的字符是数字(例如 d),则整个当前磁带总共会被重复写 d-1 次。现在,对于给定的编码字符串 S 和索引 K,查找并返回解码字符串中的第 K 个字母。示例 1:输入:S = "leet2code3", K = 10输出:"o"...

2019-06-12 21:34:17 339

原创 LeetCode 盈利计划(动态规划)

让我们把这些犯罪的任何子集称为盈利计划,该计划至少产生 P 的利润。有多少种方案可以选择?因为答案很大,所以返回它模 10^9 + 7 的值。示例 1:输入:G = 5, P = 3, group = [2,2], profit = [2,3]输出:2解释: 至少产生 3 的利润,该帮派可以犯下罪 0 和罪 1 ,或仅犯下罪 1 。总的来说,有两种方案。示例 2:输入:G = ...

2019-06-12 11:38:31 791

原创 LeetCode 第N个神奇数字(二分搜索)

如果正整数可以被 A 或 B 整除,那么它是神奇的。返回第 N 个神奇数字。由于答案可能非常大,返回它模 10^9 + 7 的结果。示例 1:输入:N = 1, A = 2, B = 3输出:2示例 2:输入:N = 4, A = 2, B = 3输出:6示例 3:输入:N = 5, A = 2, B = 4输出:10示例 4:输入:N = 3, A = 6, B =...

2019-06-11 19:21:38 347

空空如也

空空如也

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

TA关注的人

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