- 2024-07-02代码随想录算法训练营第四十五天 | 打家劫舍
198.打家劫舍题目链接文章讲解视频讲解dp[j]:表示投到第j家最多能偷dp[j]的钱递推公式:dp[j]=max(dp[j-2]+nums[j],dp[j-1])初始化:dp[0]=nums[0],dp[1]=max(dp[0],dp[1])遍历顺序:从小到大打印dp数组classSolution{public:introb(vector<int>&n
- 2024-07-02代码随想录算法训练营第四十四天 | 322.零钱兑换 279.完全平方数 139.单词拆分
322.零钱兑换题目链接文章讲解视频讲解classSolution{public:intcoinChange(vector<int>&coins,intamount){//dp[j]:表示能凑成面额j所需的最少硬币个数vector<int>dp(amount+1,0);//递推公式:dp[j]=min(dp[j-coins[i]
- 2024-07-01代码随想录算法训练营第九天|232.用栈实现队列、225.用队列实现栈、 20.有效的括号、1047.删除字符串中的所有相邻重复项
文章目录232.用栈实现队列思路--直接模拟225.用队列实现栈解法一、两个队列模拟解法二、一个队列模拟20.有效的括号栈模拟1047.删除字符串中的所有相邻重复项解法一、栈解法二、双指针232.用栈实现队列题目链接:232.用栈实现队列-力扣(LeetCode)题目描述:请你仅
- 2024-07-01代码随想录算法训练营Day9 | 字符串 151.翻转字符串单词 28.实现strStr() KMP算法介绍
python中常用: s[::-1]: 反转整个字符 s.strip():删除开头或结尾处的空白字符 s.split():字符拆分成单词 →list “”.join(s):list→字符串 (持续更新…) 151.翻转字符串里的单词 题目: Leetcod
- 2024-07-01Day61 代码随想录打卡|回溯算法篇---组合优化
本篇是针对上一题的优化,因为在计算所有可能的组合结果时,不是每一条路径都是我们需要遍历的,如图,当n和k都为4的时候,其实最终的结果只有一个[1,2,3,4]是符合结果的。因此我们遍历的时候就不需要遍历每一条边,而是只需要沿着1,2,3,4的路径直接下来即可。那么我们怎么控制循环变量使得
- 2024-07-01代码随想录算法训练营第四十三天 | 52.携带研究材料 518.零钱总和II 377.组合总和IV 70.爬楼梯
完全背包有N件物品和一个最多能被重量为W的背包,第i间物品的重量为weights[i],价值为value[i],每件物品都有无限个,求解将哪些物品装入背包里,物品价值总和最大遍历顺序:纯完全背包问题(即求装满背包后的最大价值)先遍历背包先遍历物品都是可以的和零一背包求解的最大不同就是遍历顺序
- 2024-07-01代码随想录算法训练营第四十二天 | 1049最后一块石头的重量II 494.目标和 474.一和零
1049.最后一块石头的重量题目链接文章讲解视频讲解解题思路: 将石头尽量分为相等的两堆,两堆最差即为所求结果 石头的重量就是石头的价值动规五部曲:dp[j]:表示背包容量为j时可以装的石头的总价值递推公式:dp[j]=max(dp[j],dp[j-stones[i]]+stones[i]初始化:均
- 2024-07-01代码随想录算法训练营第十天|232.用栈实现队列、225.用队列实现栈、20.有效的括号、 1047. 删除字符串中的所有相邻重复项
今天学习了栈与队列这两个数据结构,栈是一个先进后出的结构,在C++中用stack进行表示,有push、pop、top、empty这些属性;队列是一个先进后出的结构,有push、pop、front、back。empty这些属性。在底层实现上,他们都是用deque双向队列进行实现的。232.用栈实现队列题目链接:232.用栈
- 2024-07-01代码随想录算法训练营第九天|151.翻转字符串里的单词,卡码网:55.右旋转字符串
151.翻转字符串里的单词题目链接:151.反转字符串中的单词-力扣(LeetCode)题目要求是给定一个字符串,要求把里面的单词进行倒序输出,并且要删除里面多余的空格。我的第一种做法是把里面的字符串提取出来,然后倒序放入一个新的字符串中,这样空间复杂度会比较高,也AC了,但肯定不是最
- 2024-06-30代码随想录算法训练营第50天 | 1143.最长公共子序列 、1035.不相交的线 、53. 最大子序和、392.判断子序列
这几题都挺类似,都是求最长公共子序列,有些题目稍微变了下1143.最长公共子序列体会一下本题和718.最长重复子数组的区别视频讲解:https://www.bilibili.com/video/BV1ye4y1L7CQhttps://programmercarl.com/1143.最长公共子序列.html/***@param{string}text1*@param{
- 2024-06-23代码随想录算法训练营第45天 | 198.打家劫舍 、213.打家劫舍II 、337.打家劫舍III
今天就是打家劫舍的一天,这个系列不算难,大家可以一口气拿下。198.打家劫舍视频讲解:https://www.bilibili.com/video/BV1Te411N7SXhttps://programmercarl.com/0198.打家劫舍.html/***@param{number[]}nums*@return{number}*/varrob=function(nums){const
- 2024-06-23代码随想录DAY2|有序数组的平方|长度最小的子数组|螺旋矩阵II
有序数组的平方有序数组的平方解题思路最优的解法是通过双指针,由于该数组是一个非递减数列,我们只需要将数组的首尾两端作为两个指针的起始位置,然后进行比较就行。具体地讲,双指针所指向的值相互比较,把较大的值放入新的数组的开通,然后该指针往前(如果是在首端的指针,则往后)。重复这
- 2024-06-23代码随想录算法训练营第18天 | 、98验证二叉树、700. 二叉搜索树中的搜索
代码随想录算法训练营第20天|654.最大二叉树https://leetcode.cn/problems/maximum-binary-tree/654.最大二叉树代码随想录https://programmercarl.com/0654.最大二叉树.html617.合并二叉树https://leetcode.cn/problems/merge-two-binary-trees/description/617.合并二
- 2024-06-23代码随想录63——二叉树4——迭代遍历
- 2024-06-22代码随想录第13天 | 二叉树part01 基础和遍历
二叉树基础知识二叉树种类满二叉树满二叉树:如果一棵二叉树只有度为0和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树(子节点要么为0,要么为2)若满二叉树的深度为k(即k层,从1开始),则其节点个数为:2^k-1完全二叉树完全二叉树:从上到下,从左到右,都是连续的。满二叉树一
- 2024-06-21代码随想录算法训练营第十四天 | 226.翻转二叉树 101.对称二叉树 104.二叉树的最大深度(先掌握递归法)
226.翻转二叉树题目:给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。解题:思路:遍历的过程中交换每个节点的左右孩子。选择哪种遍历方式?中序不行,左中右,左边子节点交换完,处理中间交换了左节点和右节点,再处理右节点去交换时这个右节点就是原来的左节点,所以有一边就一
- 2024-06-21Day57 代码随想录打卡|二叉树篇---修建二叉搜索树
题目(leecodeT669):给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low,high]中。修剪树 不应该 改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在 唯一的答
- 2024-06-21代码随想录Day1-二分查找法|快慢指针
二分查找题目链接二分查找是一个较为基础的查找方式,对一个有序没有重复值的数组进行查找时,能够提供一个较好的时间复杂度\(O(log(n))\)算法概要对于有序并且没有重复值的数组来说,我们可以首先选定整个数组的中间下标,它的值则称为中间值,通过它把大数组分成两个小的数组,其中一个
- 2024-06-21代码随想录算法训练营第17天 | 二叉树04
代码随想录算法训练营第17天找树左下角的值https://leetcode.cn/problems/find-bottom-left-tree-value/找树左下角的值代码随想录https://leetcode.cn/problems/find-bottom-left-tree-value/路径总和https://leetcode.cn/problems/path-sum/description/路径总和2https
- 2024-06-20代码随想录刷题复习day01
day01数组-二分查找classSolution{publicintsearch(int[]nums,inttarget){//左闭右闭intleft=0;intright=nums.length-1;intmid=0;while(right>=left){mid=left+(right-le
- 2024-06-20Day56 代码随想录打卡|二叉树篇---删除二叉搜索树中的节点
题目(leecodeT450):给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。方法:二叉搜索
- 2024-06-19代码随想录算法训练营第四十三天 | 完全背包理论基础、518.零钱兑换II、377. 组合总和 Ⅳ、70. 爬楼梯 (进阶)
完全背包理论基础题目链接:https://kamacoder.com/problempage.php?pid=1052文档讲解:https://programmercarl.com/%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E7%90%86%E8%AE%BA%E5%9F…视频讲解:https://www.bilibili.com/video/BV1uK411o7c9/思路完全背包中,每个物品可以
- 2024-06-19代码随想录算法训练营第42天 | 1049. 最后一块石头的重量 II 、494. 目标和 、474.一和零
最后一块石头的重量II本题就和昨天的416.分割等和子集很像了,可以尝试先自己思考做一做。视频讲解:https://www.bilibili.com/video/BV14M411C7oVhttps://programmercarl.com/1049.最后一块石头的重量II.html这三体=题都没啥思路/***@param{number[]}stones*@re
- 2024-06-18代码随想录第12天 | 栈与队列part02(有题目未解决)
题目:150.逆波兰表达式求值思路:1.使用栈,存储数字,遇到运算符,则取出栈顶两个数进行运算,结果在存入栈中。坑:加减乘除运算符没有别的技巧,就是if相等然后+-*/,switch也可以栈使用longlong型,int型会溢出使用"+"不是单引号'+',vector<string类型>不是vector<char类型>编
- 2024-06-18代码随想录 算法训练营day11 Leetcode150 逆波兰表达式求值 Leetcode239 滑动窗口最大值 Leetcode347 前K个高频元素
Leetcode150逆波兰表达式求值题目链接栈classSolution{publicintevalRPN(String[]tokens){Deque<Integer>stack=newLinkedList();for(Strings:tokens){if("+".equals(s)){//leetcode内置jdk的问题,不能使用==