力扣
文章平均质量分 53
我好方^-^
我好方,希望接下来一个月一切顺利
展开
-
笔试题 热气球 可以最多拿多少个金币
题目描述 一个热气球,每次飞行的最远距离是M,每次降落后就得再重启一次,且热气球最多重启K次。 有N个宝藏,宝藏位置由近到远排列,是当前宝藏到第0个宝藏的距离,所以第0个宝藏的位置为0。每个宝藏里面含有a[i]个金币。 热气球初始处于0位置,求热气球在该条件下能获得的最大金币数。 输入N, M, K,表示有N为宝藏的个数,M为热气球每次重启能飞行的最远距离,K为热气球的重启次数。 然后输入N行,每行两个数,第一个数是当前宝藏距离第0个宝藏的距离,第二个数是当前宝藏的金币数。 5 10 2 0 5 8 6 1原创 2021-03-28 22:18:01 · 221 阅读 · 0 评论 -
求岛屿的数量 并查集
岛屿数量 题解 可以直接深度优先或者广度优先遍历,然后统计连通图的个数。 今天用新学的并查集来做。 并查集主要用来 集合的合并和查询。 并查集的实质 构造关系,保存父亲节点的树结构。 合并集合,合并两棵树,将树的根节点并入另一个树的根节点 具体代码实现如下 int fa[305*305]; // 定义父亲节点 int siz[305*305]; // 以该节点为首的集合的元素个数 void merge(int x, int y) { // 合并两个点 x,y,原创 2021-02-28 18:02:07 · 192 阅读 · 0 评论 -
402.移掉K位数字 容易理解的解释 附带坑
移掉K位数字 容易理解的解释 附带坑402. 移掉K位数字 容易理解的解释 附带坑解题思路代码 402. 移掉K位数字 容易理解的解释 附带坑 https://leetcode-cn.com/problems/remove-k-digits/ 解题思路 利用 单调栈 来做题: 对于每一位数,我们如何进行删除和保留?如何判断该位是否需要删除? 找到(n-k)位子序列,使得该子序列的数字最小,那么如何使得数字最小?即最高位越小越好。 对于 123a 数字来说,当a<3时,删除前面的3,可以使得 12a原创 2021-02-16 13:04:25 · 361 阅读 · 1 评论 -
1371. 每个元音包含偶数次的最长子字符串
解题思路 暴力解法: 遍历所有可能的子字符串O(n2)O(n^2)O(n2),判断元音字母出现的次数O(n),所有次数为偶数统计长度,取其最长的长度为答案, 时间复杂度O(n3)O(n^3)O(n3)。 for (int i = 0; i < s.size(); i++) { for (int j = 0; j < s.size(); j++) { // [i,j] 为一个可能的子字符串 // 暴力 统计元音字母出现的次数 复杂度O(n) .原创 2021-02-16 12:23:27 · 221 阅读 · 0 评论 -
二分 寻找两个正序数组的中位数
力扣 寻找两个正序数组的中位数 hard 寻找两个正序数组的中位数题目思路代码 题目 思路 如下图所示,中位数必然满足这样的分割线, 将两个数组分别分为两个部分,最终组成四个部分,分别为 t1_left, t1_right, t2_left, t2_right, 其中t1代表第一个数组, t2代表第二个数组, left 代表分割线左边的部分, right 代表分割线右边的部分。 要解决的问题就是找到这样一个问题 左边的元素个数为(m+n+1)/2, 用 i表示分割线在 t1中的位置, j代表分割线在原创 2021-01-29 00:09:21 · 221 阅读 · 1 评论