代码随想录day50:买卖股票的最佳时机iii、买卖股票的最佳时机iv-爱代码爱编程
买卖股票的最佳时机III class Solution { public: int maxProfit(vector<int>& prices) { vector<vect
代码编织梦想
买卖股票的最佳时机III class Solution { public: int maxProfit(vector<int>& prices) { vector<vect
669 修剪,做了好久,因为非想用自己的方法实现 一开始就觉得跟删除没什么差别,按删除写的,最开始的问题是删除都写的不对,传参数的时候忘记不能只传* node要传 *&node才对 删除的实现改对了之后,还是逻辑有根本问题,以下是错误代码: 问题在于,每次node被修改之后新的node的val是会变的,也是需要再查一次的,但是要传到trave
今日任务 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II 总结 24. 两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返
# 二维dp数组,01背包 1.确定dp数组以及下标的含义 dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。 2. gpt 解决我的困惑 3. 另外: 当 j < weight[0]的时候,dp[0][j] 应该是 0,因为背包容量比编号0的物品重量还小。 当j &g
文章目录 01背包问题,你该了解这些!01背包问题,你该了解这些! 滚动数组416. 分割等和子集 01背包问题,你该了解这些! 题目链接:代码随想录 二维数组解决0-1背包问
数组——数组理论基础,704. 二分查找,27. 移除元素 文档链接:代码随想录----数组理论基础 做题感想: 二分查找之前是做过一遍的,尽管是原题但是只是记得基本的思想。完成编写后还是报错了,主要问题在于没有
● 198.打家劫舍 dp数组表示 考虑nums数组中下标为i时可以偷的最大金额 递推公式:dp[i]分为偷前一个和不偷前一个 偷前一个dp[i-1] 不偷前一个dp[i-2]+nums[i] 取二者最大值即可 遍历顺序 从小到大 class Solution { public: int rob(vector<int>
今日任务 ● 344.反转字符串 ● 541. 反转字符串II ● 剑指Offer 05.替换空格 ● 151.翻转字符串里的单词 ● 剑指Offer58-II.左旋转字符串 344.反转字符串 编写一个函数
#1049 最后一块石头的重量 II 自己没想出来呜呜。我思考的时候以为是有特定顺序才行,然后回想一下背包问题好像不能解决顺序的,只能解决组合的,也就是每个东西有或者没有,然后我就觉得我想不出来了。这个时候我应该联想到背包问题只能解决组合的,所以这道题我那样想顺序的想法就是错的,要转变思路 看了随想录学会了,自己写了: 先用数学想一下 n 个 (
day40休息日 #343 整数拆分 花了好久理解 int integerBreak(int n) { vector<int> dp(n+1,0); dp[1]=1; dp[2]=1; for(int i=3;i<=n;i++){ cout<
注意实际上真实库函数的stack和queue的pop都是没有返回值的 #232 class MyQueue { public: stack<int> sin; stack<int> sout; MyQueue() { //nothing, already initialized
文章目录 121. 买卖股票的最佳时机122.买卖股票的最佳时机II 121. 买卖股票的最佳时机 为什么定义dp数组为二维数组? dp数组定义,dp(i)[0] 表示第i天持有
文章目录 343. 整数拆分96.不同的二叉搜索树:star: 343. 整数拆分 题目链接:代码随想录 本题就是一个个递推,通过将dp[i]定义为第i个值的最大乘积 然后最大
文章目录 860.柠檬水找零406.根据身高重建队列452. 用最少数量的箭引爆气球:star: 860.柠檬水找零 链接:代码随想录 5美元相当滴珍贵 解题思路: 情况
java Deque双侧队列API讲解 232.用栈实现队列 题目链接:代码随想录 本题解题思路: 关键点,经过两个栈的进出颠倒,保证元素先进先出 ①设置两个栈,一个用于进栈,一个用于出栈,这样确保元素顺序与队列顺序
文章目录 栈应用总结20. 有效的括号1047. 删除字符串中的所有相邻重复项150. 逆波兰表达式求值 栈应用总结 栈的应用:非常适合用来做匹配消除元素类型的题 递归的实现就是:每
198. 打家劫舍 1.代码 class Solution { public: int rob(vector<int>& nums) { vector<int>f(nums.size(), 0); if (nums.size() >= 1) f[0] = nums[0];
739. 每日温度 通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。 1.代码 暴力做法 class Solution { public: vector<int> dailyTemperatures(vector<int>& tempe
题目链接:122. 买卖股票的最佳时机 II 1.思路 注意这题:可以当天买和当天出售 所以只要买正利润的票就行了,我们把每天的后一天的利润算出来,再倒序排序,前面都是正利润,都加起来,到负数后就停止累加 2.代码 class Solution { public: int maxProfit(vector<int>&
题目链接:513. 找树左下角的值 思路 就是求最下面一层的最左边的那个结点的值,一般我们按顺序左右遍历,第一次遍历到的最深处的那条路径的左叶子就是我们要求的值了,比较深度一般就是用前序了 其实就是求所有路径中最长的一条路径的左叶子。 递归法(前序) class Solution { public: int maxdept = INT_M