随想

代码随想录算法训练营第三十天| 738.单调递增的数字 968.监控二叉树 (可以跳过)

738.单调递增的数字 要求: 保证最大的一个数,它满足 每个位数都是递增的 思路1: 为了减少时间复杂度,当时打算,先判断最大的位数,从大-》小,看以后的位数是否满足当前数比前一个数大 思路2: 其实前面再往后想想:就是如果当前的数不满足,直接降级,然后后面都是9 就可以了 ——》一定要好好看例子 ......
随想录 训练营 随想 算法 代码

代码随想录算法训练营第三十天| 435. 无重叠区间 763.划分字母区间 56. 合并区间

435. 无重叠区间 要求: 给了多个区间,然后找出来删掉最少的区间数,从而可以让上下的区间不重叠 换个想法: 当前节点和上一个节点如果重叠,那么我就+1,然后缩小上一个节点,如果还是跟上一个节点重叠,那么就证明这个节点也要删除 小技巧: lamda函数不好用,每次比较的时候都会在定义一个cmp函数 ......
区间 随想录 训练营 随想 算法

代码随想录算法训练营第二十九天| 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果

860.柠檬水找零 思路: 遇到20,先给10和5,再给三个5 代码: 1 bool lemonadeChange(vector<int>& bills) { 2 if (bills.size() == 0) return true; 3 4 map<int, int> currentMoney; ......
随想录 训练营 数组 九天 随想

代码随想录算法训练营第二十八天| 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果

1005.K次取反后最大化的数组和 思路: 仅排序一次,当前数<下一个数,就反转当前数,如果大于,那么就反转下一个 ——》也就是保证每次反转都是最小的数 注意:如果移动到最后一个节点了,K还没用完,那么就证明只能反转K 代码: 1 int largestSumAfterKNegations(vect ......
随想录 训练营 数组 随想 算法

编程随想曲周刊(第36期)

这里记录每周的所见所闻,周日发布。点击阅读原文可以直接访问文章链接。 # 工具 1. [Grafana Labs](https://grafana.com/zh-cn/grafana/?tab=revenue) 2. [Prometheus](https://prometheus.io/docs/i ......
随想曲 随想 周刊

代码随想录算法训练营第二十七天| 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II

122.买卖股票的最佳时机II 注意: 1,第一个和最后一个 2,只有一个数的情况 3,2255,这种情况 思路: 1,买入:左:空/高/平 右:高 2,卖出:左:低 右:空/ 低/平 代码: 1 int maxProfit(vector<int>& prices) { 2 int result = ......
随想录 训练营 随想 算法 时机

代码随想录|单调栈

● 739. 每日温度 ● 496.下一个更大元素 I 单调栈 那有同学就问了,我怎么能想到用单调栈呢? 什么时候用单调栈呢? 通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。时间复杂度为O(n)。 那么单调栈的原理是什么呢?为什么时间 ......
随想录 随想 代码

代码随想录算法训练营第二十六天| 455.分发饼干 376. 摆动序列 53. 最大子序和

455.分发饼干 自己的 思路: 先排序,然后每个孩子找到他能满足的胃口饼干,找到了之后,孩子向前,饼干向前 代码: 1 int findContentChildren(vector<int>& g, vector<int>& s) 2 { 3 int result = 0; 4 sort(g.be ......
随想录 训练营 序列 饼干 随想

代码随想录算法训练营第二十五天| 332.重新安排行程(可跳过) 51. N皇后(可跳过) 37. 解数独(可跳过)

332.重新安排行程(可跳过) 难点: 1,解决死锁问题,我采用的是 selected,但是不会出现A->B->A这条信息 2,即使出现A-》B-》A,因为是有多条路径,所以无法找到合适的含有全部机场的路径 3,保证顺序 代码: 1 //机票信息 -》 一条遍历所有机场的路径 2 //步骤: 3 / ......
解数 随想录 训练营 随想 皇后

代码随想录|动态规划(终章)

647. 回文子串 516.最长回文子序列 动态规划总结篇 647. 回文子串 dp[i][j]为[i,j]是否为回文串 这里要注意的是我们的遍历顺序,不能是i一遍,j一遍这样,因为会包含后面的信息 所以我们这里选择的是先遍历长度,然后再遍历首字符 class Solution: def count ......
随想录 随想 代码 动态

代码随想录算法训练营第二十四天| 491.递增子序列 46.全排列 47.全排列 II

491.递增子序列 此题的难点: 1,前提需要保留原有顺序 2,保证递增 3,保证去重 注意: 去重一定要有set的同时保证有顺序 代码: 1 void findSubsequences_trackBack(vector<int>& nums, int startIndex, vector<int> ......
随想录 训练营 序列 随想 算法

代码随想录|动态规划

392.判断子序列 115.不同的子序列 583. 两个字符串的删除操作 72. 编辑距离 编辑距离总结篇 392.判断子序列 和昨天的最长重复子串一样,只要计算两者的重复长度是不是和s一样就行了。但是还是不如双指针的时间复杂度 O(nm) O(nm) class Solution: def isS ......
随想录 随想 代码 动态

代码随想录|动态规划-编辑距离

392.判断子序列 115.不同的子序列 583. 两个字符串的删除操作 72. 编辑距离 编辑距离总结篇 392.判断子序列 和昨天的最长重复子串一样,只要计算两者的重复长度是不是和s一样就行了。但是还是不如双指针的时间复杂度 O(nm) O(nm) class Solution: def isS ......
随想录 随想 代码 动态

java刷代码随想录

# 数组 ## 704. 二分查找 给定一个 `n` 个元素有序的(升序)整型数组 `nums` 和一个目标值 `target` ,写一个函数搜索 `nums` 中的 `target`,如果目标值存在返回下标,否则返回 `-1`。 **示例 1:** ``` 输入: nums = [-1,0,3,5 ......
随想录 随想 代码 java

代码随想录算法训练营第二十三天| 93.复原IP地址 78.子集 90.子集II

93.复原IP地址 思路: 先考虑合法的情况,然后再依次往path里面加字符,如果它的长度>4但是还没有到最末尾,也就是说他是错的,也就return出去 代码: 1 //根据给定的一组字符串,分出来可能正确的IP 2 //思路:切割,[start, i],其中长度为0-3, 3 //判断是否满足条件 ......
子集 随想录 训练营 随想 算法

代码随想录算法训练营第51天 | ● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费 ●总结 - 第9章 动态规划part12

第九章 动态规划part12 ● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费 ● 总结 309.最佳买卖股票时机含冷冻期 本题加了一个冷冻期,状态就多了,有点难度,大家要把各个状态分清,思路才能清晰 视频讲解: https://programmercarl.com/03 ......
时机 随想录 股票 训练营 手续费

代码随想录算法训练营第55天 | ● 392.判断子序列 ● 115.不同的子序列 - 第9章 动态规划part15

第九章 动态规划part15 ● 392.判断子序列 ● 115.不同的子序列 详细布置 392.判断子序列 这道题目算是 编辑距离问题 的入门题目(毕竟这里只是涉及到减法),慢慢的,后面就要来解决真正的 编辑距离问题了 https://programmercarl.com/0392.%E5%88% ......
序列 随想录 训练营 随想 算法

代码随想录算法训练营第56天 | ● 583. 两个字符串的删除操作 ● 72. 编辑距离 ● 编辑距离总结篇 - 第9章 动态规划part16

第九章 动态规划part16 ● 583. 两个字符串的删除操作 ● 72. 编辑距离 ● 编辑距离总结篇 详细布置 583. 两个字符串的删除操作 本题和动态规划:115.不同的子序列 相比,其实就是两个字符串都可以删除了,情况虽说复杂一些,但整体思路是不变的。 72. 编辑距离 最终我们迎来了编 ......
随想录 训练营 字符串 随想 算法

代码随想录|动态规划 - 子序列系列

300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组 1143.最长公共子序列 1035.不相交的线 53. 最大子序和 动态规划 300.最长递增子序列 dp[i]:以nums[i]为尾的最大上升子序列 如果前面的nums[j]<nums[i] : dp[i] = max( ......
随想录 序列 随想 代码 动态

代码随想录算法训练营第二十二天| 39. 组合总和 40.组合总和II 131.分割回文串

39. 组合总和 思路: 虽然可以是重复的,但是考虑到组合没有顺序这一说,所以还是要保留startIndex, sum不要再遍历一遍,再相加,应该跟随path,一起相加 代码: 1 void combinationSum_trackBack(vector<int>& candidates, int ......
总和 随想录 回文 训练营 随想

代码随想录|各种买卖股票问题

121. 买卖股票的最佳时机 122.买卖股票的最佳时机II 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费 总结 121. 买卖股票的最佳时机 全程只能买卖一次 贪心算法 这个算法的写法也非常有意思!左边小右边 ......
随想录 随想 代码 股票 问题

代码随想录算法训练营第二十一天| 216.组合总和III 17.电话号码的字母组合

216.组合总和III 思路: 很像上一个组合类型的题目,唯一不同的就是自己写一个sum 代码: 1 void convertBST_cur(TreeNode* root, vector<TreeNode*>& nodes) 2 { 3 if (!root) return ; 4 if (root- ......
随想录 训练营 总和 随想 算法

代码随想录|打家劫舍问题

198.打家劫舍 213.打家劫舍II 337.打家劫舍III 198.打家劫舍 class Solution: def rob(self, nums: List[int]) -> int: n = len(nums) if n == 0: return 0 dp = [0 for _ in ran ......
打家劫舍 随想录 随想 代码 问题

代码随想录算法训练营第二十一天| 77. 组合

回溯——组合 思路: 套了K次的循环,如何对K次循环呢,就需要一个startIndex,用它来控制从哪里开始 代码: 1 void combine_backTrack(int n, int k, int startIndex, vector<int>& path, vector<vector<int ......
随想录 训练营 随想 算法 代码

代码随想录|完全背包

完全背包 ● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ ● 70. 爬楼梯 (进阶) ● 322. 零钱兑换 ● 279.完全平方数 ● 139.单词拆分 ● 关于多重背包,你该了解这些! ● 背包问题总结篇! 完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weig ......
随想录 随想 背包 代码

代码随想录算法训练营第二十天| 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树

669. 修剪二叉搜索树 思路 递归法: 需要思考清楚,如果当前节点<low,那么就返回递归它的右节点,而不是自己取判断,找出来一个合适的节点,这样的话会越想越乱 代码: 1 TreeNode* trimBST_cursor(TreeNode* root, int low, int high) { ......
随想录 训练营 数组 随想 算法

代码随想录算法训练营第十九天| 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点

235. 二叉搜索树的最近公共祖先 思路: 因为是二叉搜索树,所以公共祖先一定是位于这两个节点区间中的 问题: 为什么第一个是这两个中间的例子,就是公共祖先呢?因为是最先符合要求的, 代码: 1 TreeNode* lowestCommonAncestor(TreeNode* root, TreeN ......
随想录 训练营 节点 九天 祖先

代码随想录|动态规划-背包问题

01背包问题,你该了解这些! 01背包问题,你该了解这些! 滚动数组 01 背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 二维dp数组01背包 1. 确定dp数组以 ......
随想录 随想 背包 代码 动态

代码随想录算法训练营第十八天| 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先

530.二叉搜索树的最小绝对差 思路: 根据二叉搜素树的特点,直接中序遍历,就是有序数组,然后两个节点进行比较,就可以 代码: 1 int getMinimumDifference(TreeNode* root) { 2 if(!root) return 0; 3 int result = INT_ ......
随想录 训练营 祖先 随想 算法

近日随想

# 0 前言 开源之夏落选给我带来的打击实在是太大了,我一下子失去了这个暑假的奋斗目标以及动力,我不知道做什么项目了,我也不知道该往哪个方向发展了 我是悲观的人 这段时间还要军训,身心俱疲 # 1 一些记录 1. [如何参与一个顶级开源项目](https://crossoverjie.top/201 ......
随想