LeetCode每日一题(202502)
每日一题(202502) 0223 1206. 设计跳表 下面给出一个回答,包括题目大意、实现思路和写满注释的代码,每部分既不啰嗦也不简略: 1. 题目大意 设计一个跳表,要求在平均 O(log n) 时间内完成搜索、插入和删除操作。跳表由多层有序链表构成,每一层起到加速查找的作用,同时允许存在重复的值。 ...
每日一题(202502) 0223 1206. 设计跳表 下面给出一个回答,包括题目大意、实现思路和写满注释的代码,每部分既不啰嗦也不简略: 1. 题目大意 设计一个跳表,要求在平均 O(log n) 时间内完成搜索、插入和删除操作。跳表由多层有序链表构成,每一层起到加速查找的作用,同时允许存在重复的值。 ...
每日一题(202501) 0124 2944. 购买水果需要的最少金币数 1. 题目大意 给定一个整数数组 prices,其中 prices[i] 表示购买第 i 个水果所需的金币数。每购买一个水果后,可以根据一定的规则免费获得后续水果。规则是:购买第 i 个水果后,可以免费获得下标在 [i+1, i+i] 范围内的水果。你的目标是通过选择购买一些水果,最小化总花费,同时确保获得所有水果。 ...
LeetCode每日一题(2405) 1235. 规划兼职工作 题目大意:给定n份兼职工作,每份工作都有开始时间、结束时间和报酬。任务是选择一些工作,使得在不重叠的情况下能够获得最大报酬。 实现思路:首先对工作按照结束时间进行排序,然后使用动态规划来求解最大报酬。在动态规划的过程中,维护一个数组f,其中f[i]表示在考虑前i个工作时可以获得的最大报酬。遍历每个工作,对于第i个工作,找到在其开始时间之前且结束时间最接近的工作j,然后更新f[i]为f[j] + 第i个工作的报酬。最终返回f[n]即为所求的最大报酬。 ...
LeetCode笔记 目标:2500分 HOT100 301. 删除无效的括号 题目大意: 给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。 返回所有可能的结果。答案可以按 任意顺序 返回。 ...
每日一题(202404) 2009. 使数组连续的最少操作数 题意:给定一个可能有重复元素的数组,可以修改数组中值为任意其他值,问使数组连续的最小操作数。 思路:由于只能改动元素,所以最后的元素个数不变,去重后,枚举每个值作为左端点,则右端点为nums[i]+n-1, 用双指针计算在区间内的元素个数即为可以保留的数字,其他数字修改元素值填满空隙即可。 ...
每日一题(202404) 2009. 使数组连续的最少操作数 题意:给定一个可能有重复元素的数组,可以修改数组中值为任意其他值,问使数组连续的最小操作数。 思路:由于只能改动元素,所以最后的元素个数不变,去重后,枚举每个值作为左端点,则右端点为nums[i]+n-1, 用双指针计算在区间内的元素个数即为可以保留的数字,其他数字修改元素值填满空隙即可。 ...
剑指Offer 数据流中的中位数 用两个堆模拟, 左边大顶堆,右边小顶堆,则两个堆顶是最中间的数字。 添加数字时: 如果输入的是第奇数个(比如第一个,则N初始化为0,插入后N为1,代表一共有一个数字),则先插入大顶堆,然后把堆顶插入小顶堆。保证小顶堆的任意一个值都比大顶堆大。 同样,如果输入的是第偶数个(第二个),则先插入小顶堆,然后将小顶堆最小值插入大顶堆。同样是保证小顶堆的任意一个值都比大顶堆大。 至于先插入哪一个堆是没有关系的,只要保证交替插入不同的堆即可,并且要确保边界问题(比如在奇数个元素的中位数, 只有一个数据时应返回先插入的堆顶值, 否则堆为空会报错)。 ...