- 博客(15)
- 收藏
- 关注
原创 [LeetCode每日1题][困难] 460. LFU缓存
文章目录题目哈希表 + 平衡二叉树 - O(logN)双哈希表 - O(1)参考题目460. LFU缓存 - 力扣(LeetCode)哈希表 + 平衡二叉树 - O(logN)一个平衡二叉树用于对结点的频率和时间从大到小排序,这里时间用一个变量time维护即可,每次使用时++time。一个哈希表用于查找结点。struct Node { int cnt, time, key, ...
2020-04-05 16:36:23
173
原创 [LeetCode每日1题][困难] 42. 接雨水
文章目录题目基本解法动态规划单调栈双指针参考题目42. 接雨水 - 力扣(LeetCode)基本解法每个柱子能装的水量取决于它左右两侧柱子高度的最小值。对每个柱子进行向左向右遍历找最小值即可。int trap(vector<int>& height){ int ans = 0; int size = height.size(); for (...
2020-04-04 17:58:29
201
原创 [LeetCode每日1题][中等] 289. 生命游戏
文章目录题目模拟法(原地)题目289. 生命游戏 - 力扣(LeetCode)模拟法(原地)普通解法没什么难度,需要另开一个数组,O(mn)空间复杂度。原地算法:把之前死的后来活的,和之前活的后来死的标记一下,最后再处理一下即可。class Solution{public: void gameOfLife(vector<vector<int>> &...
2020-04-02 17:58:37
220
原创 [LeetCode每日1题][简单] 面试题62. 圆圈中最后剩下的数字
文章目录题目数学+递归解法暴力解法参考题目面试题62. 圆圈中最后剩下的数字 - 力扣(LeetCode)数学+递归解法长度为n的序列中,我们要删除的第一个元素位置是m % n。删除完第一个元素后,得到的是一个长度为n - 1的子序列,假设这个子序列的下标从0开始,如果我们能知道这个子序列进行删除操作后,最后剩余的元素下标x,那么原序列最后剩余的元素下标应为(m % n + x) % n...
2020-03-30 15:22:45
257
原创 [LeetCode每日1题][中等] 1162. 地图分析
文章目录题目回溯DFS解法多源BFS解法DP法参考题目1162. 地图分析 - 力扣(LeetCode)回溯DFS解法class Solution{ int N; vector<vector<int>> dist; // 存放结点到陆地的最短距离 vector<vector<int>> *grid;public...
2020-03-29 15:18:58
189
原创 [LeetCode每日1题][简单] 198. 打家劫舍 / 面试题 17.16.按摩师
文章目录题目动态规划解法复杂度题目俩题是一样的面试题 17.16. 按摩师 - 力扣(LeetCode)198. 打家劫舍 - 力扣(LeetCode)动态规划解法dp值表示到目前为止可以收获的最高金额,到一个新房屋i时,有两种选择偷窃,该点dp值等于该点金额+dp[i-2]不偷窃,该点dp值等于dp[i-1]选收益最大的那个即可。dp值可以存在数组里,注意到我们只需...
2020-03-24 16:42:47
187
1
原创 [LeetCode每日1题][中等] 945. 使数组唯一的最小增量
文章目录题目暴力解法计数补偿法参考题目945. 使数组唯一的最小增量 - 力扣(LeetCode)暴力解法很容易想到的一个解法是排序,对A[i-1] >= A[i]的情况,把A[i]变成A[i-1]+1,结果+=步长即可。但这样做很低效,时间复杂度为O(NlogN)。class Solution {public: int minIncrementForUnique(ve...
2020-03-22 11:34:44
191
原创 [LeetCode每日1题][中等] 365. 水壶问题
文章目录题目数学解法深度优先搜索参考题目365. 水壶问题 - 力扣(LeetCode)数学解法裴蜀定理:对于两个数x,y, 存在a,b使得ax+by = z成立当且仅当z是x与y最大公因数的倍数。class Solution {public: bool canMeasureWater(int x, int y, int z) { if (x + y &l...
2020-03-21 15:12:42
311
原创 [笔记]二分查找的几种写法
文章目录基本形式需要访问右邻居需要访问左右邻居C++中的二分查找参考基本形式left和right均为索引值循环条件:left <= right向左查找:right = mid-1向右查找:left = mid+1查找条件可以在不与元素的两侧进行比较的情况下确定int binarySearch(vector<int>& nums, int target){...
2020-03-14 14:51:58
325
原创 [LeetCode每日1题][中等] 300. 最长上升子序列
文章目录题目DP解法思路复杂度分析实现贪心+二分解法思路复杂度分析实现参考题目300. 最长上升子序列 - 力扣(LeetCode)DP解法思路开一个长度与原数组相同的数组dp,初始值dp[0]=1。dp数组元素的含义是:到当前索引为止,最大的递增子序列长度。接下来开始遍历数组,设当前索引为index,在0..index范围内,找出小于当前元素的那些元素,它们对应的dp值中的最大值+1...
2020-03-14 14:26:29
169
原创 [笔记]最大公因数与最小公倍数算法
最大公因数(Greatest Common Divisor)int gcd(int a,int b) { if(b == 0) return a; return gcd(b,a%b);}也可以直接使用C++中的__gcd()函数最小公倍数(Least Common Multiple)int lcm(int a,int b) { return a*b/gcd(a,b);}...
2020-03-13 13:00:53
434
原创 [LeetCode每日1题][简单] 169. 多数元素
文章目录题目Boyer-Moore 投票算法思路复杂度分析实现哈希表解法思路复杂度分析实现其它解法分治法实现排序法随机算法参考题目链接Boyer-Moore 投票算法思路摩尔投票法,遇到相同的数,就投一票,遇到不同的数,就减一票,最后还存在票的数就是众数。复杂度分析O(n)实现class Solution {public: int majorityElement(ve...
2020-03-13 10:23:28
156
原创 [LeetCode每日1题][简单] 1013. 将数组分成和相等的三个部分
文章目录题目前缀和解法思路复杂度分析实现优化C++复习参考题目1013. 将数组分成和相等的三个部分 - 力扣(LeetCode)前缀和解法思路遍历数组,并维护一个前缀和数组preSum,方便后面求区间和数组和sum = preSum[size]-1如果sum%3 != 0 返回false遍历preSum,寻找preSum[i] == sum/3,如果i不存在,返回false...
2020-03-11 10:46:41
261
原创 [LeetCode每日1题][中等] 322. 零钱兑换
文章目录题目DFS+贪心+剪枝解法思路实现DP解法(自上而下)思路实现DP解法(自下而上)思路实现C++复习std::sort的用法其他参考题目题目链接DFS+贪心+剪枝解法思路一看到这种组合问题,就想到了DFS,并且想到了一个优化点:对coins排序,从大到小进行搜索,搜索到一种解法,直接返回结果,也就是结合贪心法。示例1:coins = [1,2,5] amount = 11...
2020-03-08 16:40:25
308
原创 [LeetCode每日1题][中等] 面试题59 - II. 队列的最大值
文章目录题目C++复习 (std::queue)暴力解法题目题目地址官方题解C++复习 (std::queue)函数签名作用void std::queue::push(T)将元素插入队尾void std::queue::pop()将队首元素移出队列T std::queue::front()返回队首元素T std::queue::back()返...
2020-03-08 12:55:00
176
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人