E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
LQB算法训练
代码随想录
算法训练
营Day11 | 20.有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值
文章目录一、20.有效的括号1.栈二、1047.删除字符串中的所有相邻重复项1.拿字符串直接作为栈,省去了栈还要转为字符串的操作2.使用Deque作为堆栈3.双指针三、150.逆波兰表达式求值1.栈总结一、20.有效的括号题目描述:给定一个只包括‘(’,‘)’,‘{’,‘}’,‘[’,‘]’的字符串,判断字符串是否有效。有效字符串需满足:(1)左括号必须用相同类型的右括号闭合。(2)左括号必须以正
热爱学习的Elina
·
2024-01-08 07:44
代码随想录算法集训营
算法
java
数据结构
leetcode
代码随想录
算法训练
营Day03|203.移除链表元素、707.设计链表、206.反转链表
文章目录一、203.移除链表元素1.递归2.直接使用原来的链表来进行删除操作3.设置一个虚拟头结点在进行删除操作二、707.设计链表1.单向链表2.双向链表三、206.反转链表1.双指针法2.递归法总结一、203.移除链表元素题目描述:给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。1.递归对除了头节点head以外的节点进行删
热爱学习的Elina
·
2024-01-08 07:43
代码随想录算法集训营
算法
链表
数据结构
java
leetcode
代码随想录
算法训练
营Day10|232.用栈实现队列、225. 用队列实现栈
文章目录理论基础一、232.用栈实现队列1.双栈二、225.用队列实现栈1.两个队列2.一个队列总结理论基础队列是先进先出,栈是先进后出。Java中的栈与队列介绍可以访问链接:Java数据结构中的栈和队列(带图解)Stack方法:方法功能Stack()构造一个空栈Epush(Ee)将e入栈,并返回eEpop()将栈顶元素出栈并返回Epeek()获取栈顶元素intsize()获取栈中有效元素个数bo
热爱学习的Elina
·
2024-01-08 07:43
代码随想录算法集训营
算法
数据结构
java
leetcode
代码随想录
算法训练
营Day01|704.二分查找、27.移出元素
文章目录数组704.二分查找1.左闭右闭区间1.左闭右开区间27.移出元素1.暴力解法2.双指针法总结数组数组是存放在连续内存空间上的相同类型数据的集合。数组下标都是从0开始的。数组内存空间的地址是连续的。数组的元素是不能删的,只能覆盖。704.二分查找题目描述:给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,
热爱学习的Elina
·
2024-01-08 07:13
代码随想录算法集训营
算法
数据结构
java
leetcode
代码随想录
算法训练
营Day02|977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵 II
文章目录一、977.有序数组的平方1.暴力排序法2.双指针法二、209.长度最小的子数组1.暴力法2.滑动窗口法三、59.螺旋矩阵II1.模拟法总结一、977.有序数组的平方题目描述:给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。1.暴力排序法每个数平方之后排序,也可以称为直接排序法。时间复杂度:O(n+nlogn)O(n+nlogn)O(n+
热爱学习的Elina
·
2024-01-08 07:13
代码随想录算法集训营
算法
矩阵
数据结构
leetcode
java
代码随想录
算法训练
营第十八天| 二叉树 235. 二叉搜索树的最近公共祖先 701. 二叉搜索树中的插入操作
235.二叉搜索树的最近公共祖先递归法二叉搜索树相对于二叉树来说,可以利用数值大小来比较左右,只需要保证root的值在p的值以及q的值中间即可。确定参数类型以及返回值:同二叉树公共祖先一样。确定终止条件:如果搜索到了空结点,返回确定单层逻辑:如果root的值比pq值大,需要向左走,如果root值比pq小,向右遍历。classSolution{public:TreeNode*lowestCommon
DLJJJJ
·
2024-01-08 06:10
代码随想录训练营
算法
leetcode
数据结构
代码随想录
算法训练
营第二十天| 回溯 理论基础 77. 组合
理论基础回溯是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯,回溯函数也是递归函数,指的是一个函数。回溯法并不是什么高效的算法。因为回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案,如果想让回溯法高效一些,可以加一些剪枝的操作,但也改不了回溯法就是穷举的本质。回溯法解决的问题组合问题:N个数里面按一定规则找出k个数的集合(不强调元素顺序)切割问题:一个字符串按一定规则有几种切割方式
DLJJJJ
·
2024-01-08 06:10
代码随想录训练营
算法
代码随想录
算法训练
营第十二天| 二叉树 层序遍历 226.翻转二叉树 101. 对称二叉树
层序遍历只使用二叉树无法完成层序遍历,需要借助其他数据结构,使用的是队列。首先,插入根结点,然后设置循环条件(一般来说,需要借助队列/堆栈实现的循环,循环条件都会包含这些数据结构)。记录遍历完每层后结点的数量(可以设置size为容器大小值,表示当前层结点的数量),size用于防止队列上本层结点与下一层结点混肴。102.二叉树的层序遍历出现错误:1.直接使用if(!root)而不是if(root!=
DLJJJJ
·
2024-01-08 06:40
代码随想录训练营
算法
数据结构
代码随想录
算法训练
营第十五天| 二叉树 513. 找树左下角的值 112. 路径总和 106.从中序与后序遍历序列构造二叉树
513.找树左下角的值层序遍历本题用层序遍历可以直接秒了,直接提取每一层中最左边的元素(i=0),然后保存到最后一层即可。classSolution{public:intfindBottomLeftValue(TreeNode*root){queueque;intres;if(!root)returnres;que.push(root);while(!que.empty()){intsize=qu
DLJJJJ
·
2024-01-08 06:40
代码随想录训练营
算法
leetcode
代码随想录
算法训练
营第十七天| 二叉树 530. 二叉搜索树的最小绝对差 501. 二叉搜索树中的众数 236. 二叉树的最近公共祖先
530.二叉搜索树的最小绝对差确定函数返回值类型及参数:由于为int类型,可以设置函数类型为int(答案将其设置为void改全局变量,这里int其实也没有实际用到)确定终止条件:当遍历到空结点返回。确定单层递归逻辑:和前面一样,记录前一个结点值,然后通过对比求出最小值。出现问题:前面直接是使用left的值导致报错栈溢出classSolution{public:TreeNode*pre=NULL;i
DLJJJJ
·
2024-01-08 06:40
代码随想录训练营
算法
数据结构
代码随想录
算法训练
营第五天| 哈希表 242. 有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
哈希表基本知识哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素,哈希表的作用是用来快速判断一个元素是否出现集合里。在查询时,枚举的时间复杂度是O(n),但如果使用哈希表的话,只需要O(1)就可以做到。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。如果在做面试题目的时候遇到需要判断一个元素是否出现过的场景也应该第一时
DLJJJJ
·
2024-01-08 06:09
代码随想录训练营
算法
散列表
数据结构
代码随想录
算法训练
营第十六天| 二叉树 654. 最大二叉树 617. 合并二叉树 700. 二叉搜索树中的搜索
654.最大二叉树构造树一般采用的是前序遍历,因为先构造中间节点,然后递归构造左子树和右子树。类似和106.从中序与后序遍历序列构造二叉树一样,需要从数组中提取数字构造二叉树,因此,需要分别在左右结点重新传入数组。确定递归函数的参数和返回值:参数传入的是存放元素的数组,返回该数组构造的二叉树的头结点,返回类型是指向节点的指针。确定终止条件:题目中说了输入的数组大小一定是大于等于1的,所以我们不用考
DLJJJJ
·
2024-01-08 06:09
代码随想录训练营
算法
数据结构
leetcode
代码随想录
算法训练
营第二十一天| 回溯 216. 组合总和 III 17. 电话号码的字母组合
216.组合总和III可以参考77.组合中关于选取数组的相关操作。递归函数的返回值以及参数:一般为void类型递归函数终止条件:path这个数组的大小如果达到k,说明我们找到了一个子集大小为k的组合了,然后当n为0的时候(找到数组值为n),终止,将结果导入res中递归函数单层逻辑:回溯法的搜索过程就是一个树型结构的遍历过程,for循环用来横向遍历,递归的过程是纵向遍历。classSolution{
DLJJJJ
·
2024-01-08 06:02
算法
leetcode
数据结构
代码随想录
算法训练
营第48天| 198.打家劫舍 213.打家劫舍II 337.打家劫舍III
JAVA代码编写198.打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下,一夜之内能够偷窃到的最高金额。示例1:输入:[1,2,3,1]输出:4解释:偷窃1号房屋(金额=1),然后偷窃
Catherinemin
·
2024-01-08 05:02
代码随想录
leetcode
算法
算法
代码随想录
算法训练
营第49天| 121. 买卖股票的最佳时机 122.买卖股票的最佳时机II
JAVA代码编写121.买卖股票的最佳时机给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0。示例1:输入:[7,1,5,3,6,4]输出:5解释:在第2天(股票价格=1)的时候买入
Catherinemin
·
2024-01-08 05:02
leetcode
代码随想录
算法
算法
代码随想录
算法训练
营第55天| 392.判断子序列 115.不同的子序列
JAVA代码编写392.判断子序列给定字符串s和t,判断s是否为t的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。进阶:如果有大量输入的S,称作S1,S2,…,Sk其中k>=10亿,你需要依次检查它们是否为T的子序列。在这种情况下,你会怎样改变代码?致谢:特别感谢@pbr
Catherinemin
·
2024-01-08 05:02
leetcode
代码随想录
算法
算法
代码随想录
算法训练
营第60天|84.柱状图中最大的矩形
JAVA代码编写84.柱状图中最大的矩形给定n个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为1。求在该柱状图中,能够勾勒出来的矩形的最大面积。示例1:输入:heights=[2,1,5,6,2,3]输出:10解释:最大的矩形为图中红色区域,面积为10示例2:输入:heights=[2,4]输出:4提示:10&&heights[left-1]>=heights[i]){lef
Catherinemin
·
2024-01-08 05:02
leetcode
代码随想录
算法
算法
代码随想录
算法训练
营第44天| 完全背包 518. 零钱兑换 II 377. 组合总和 Ⅳ
JAVA代码编写52.携带研究材料题目描述小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的空间,并且具有不同的价值。小明的行李空间为N,问小明应该如何抉择,才能携带最大价值的研究材料,每种研究材料可以选择无数次,并且可以重复选择。输入描述第一行包含两个整数
Catherinemin
·
2024-01-08 05:31
leetcode
代码随想录
算法
算法
代码随想录
算法训练
营第45天| 70. 爬楼梯 (进阶) 322. 零钱兑换 279.完全平方数
JAVA代码编写70.爬楼梯(进阶版)卡码网:57.爬楼梯(第八期模拟笔试)题目描述假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬至多m(1=0)dp[j]+=dp[j-i];}}System.out.println(dp[n]);}}}322.零钱兑换给你一个整数数组coins,表示不同面额的硬币;以及一个整数amount,表示总金额。计算并返回可以凑成总金额所需的最少的硬币个数。如果没
Catherinemin
·
2024-01-08 05:31
leetcode
代码随想录
算法
算法
代码随想录
算法训练
营第46天| 139.单词拆分 多重背包
JAVA代码编写139.单词拆分给你一个字符串s和一个字符串列表wordDict作为字典。请你判断是否可以利用字典中出现的单词拼接出s。**注意:**不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。示例1:输入:s="leetcode",wordDict=["leet","code"]输出:true解释:返回true因为"leetcode"可以由"leet"和"code"拼接成。示
Catherinemin
·
2024-01-08 05:31
leetcode
代码随想录
算法
算法
代码随想录
算法训练
营第42天| 01背包问题,你该了解这些! 01背包问题,你该了解这些! 滚动数组 416. 分割等和子集
JAVA代码编写背包问题01背包和完全背包就够用了而完全背包又是也是01背包稍作变化而来,即:完全背包的物品数量是无限的。46.携带研究材料题目描述小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的空间,并且具有不同的价值。小明的行李空间为N,问小明应该如何
Catherinemin
·
2024-01-08 05:01
leetcode
代码随想录
算法
算法
代码随想录
算法训练
营第43天| 1049. 最后一块石头的重量 II 494. 目标和 474.一和零
JAVA代码编写1049.最后一块石头的重量II有一堆石头,用整数数组stones表示。其中stones[i]表示第i块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x>1;//初始化dp数组int[]dp=newint[target+1];for(inti=0;i=stones[i];j--){//两种情况,要么放,要么不放dp[j]=Math.m
Catherinemin
·
2024-01-08 05:01
代码随想录
leetcode
算法
算法
代码随想录
算法训练
营第39天| 62.不同路径 63. 不同路径 II
JAVA代码编写62.不同路径一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?示例1:输入:m=3,n=7输出:28示例2:输入:m=3,n=2输出:3解释:从左上角开始,总共有3条路径可以到达右下角。1.向右->向下->向下2.向下->向下->向
Catherinemin
·
2024-01-08 05:00
leetcode
代码随想录
算法
算法
代码随想录
算法训练
营第41天| 343. 整数拆分 96.不同的二叉搜索树
JAVA代码编写343.整数拆分给定一个正整数n,将其拆分为k个正整数的和(k>=2),并使这些整数的乘积最大化。返回你可以获得的最大乘积。示例1:输入:n=2输出:1解释:2=1+1,1×1=1。示例2:输入:n=10输出:36解释:10=3+3+4,3×3×4=36。提示:2<=n<=58教程:https://programmercarl.com/0343.%E6%95%B4%E6%95%B0
Catherinemin
·
2024-01-08 05:00
代码随想录
leetcode
算法
算法
代码随想录
算法训练
营第36天| 435. 无重叠区间 763.划分字母区间 56. 合并区间
JAVA代码编写435.无重叠区间给定一个区间的集合intervals,其中intervals[i]=[starti,endi]。返回需要移除区间的最小数量,使剩余区间互不重叠。示例1:输入:intervals=[[1,2],[2,3],[3,4],[1,3]]输出:1解释:移除[1,3]后,剩下的区间没有重叠。示例2:输入:intervals=[[1,2],[1,2],[1,2]]输出:2解释:
Catherinemin
·
2024-01-08 05:30
leetcode
代码随想录
算法
算法
代码随想录
算法训练
营第38天| 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
JAVA代码编写动态规划(DynamicProgramming)一个问题可以划分为多个子问题,且子问题之间有关联,就可以使用动态规划。动态规划问题步骤:确定dp数组(dptable)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组509.斐波那契数斐波那契数(通常用F(n)表示)形成的序列称为斐波那契数列。该数列由0和1开始,后面的每一项数字都是前面两项数字的和。也就是:F
Catherinemin
·
2024-01-08 05:30
代码随想录
leetcode
算法
算法
代码随想录
算法训练
营第35天| 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球
JAVA代码编写860.柠檬水找零在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,(按账单bills支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付5美元、10美元或20美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付5美元。注意,一开始你手头没有任何零钱。给你一个整数数组bills,其中bills[i]是第i位顾客付的账。如果你能给每位顾客正确找零,返
Catherinemin
·
2024-01-08 05:29
代码随想录
leetcode
算法
算法
代码随想录
算法训练
营第24天|77. 组合
JAVA代码编写77.组合给定两个整数n和k,返回范围[1,n]中所有可能的k个数的组合。你可以按任何顺序返回答案。示例1:输入:n=4,k=2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]示例2:输入:n=1,k=1输出:[[1]]提示:1>result=newArrayListpath=newLinkedList>combine(intn,intk){bac
Catherinemin
·
2024-01-08 05:59
leetcode
代码随想录
算法
算法
java
代码随想录
算法训练
营第23天|669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树
JAVA代码编写669.修剪二叉搜索树给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉搜索树,使得所有节点的值在[low,high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在唯一的答案。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。示例1:输入:
Catherinemin
·
2024-01-08 05:59
leetcode
代码随想录
算法
算法
java
代码随想录
算法训练
营第37天| 738.单调递增的数字 & 贪心总结
JAVA代码编写738.单调递增的数字当且仅当每个相邻位数上的数字x和y满足x0;i--){if(Integer.parseInt(strings[i])
Catherinemin
·
2024-01-08 05:59
leetcode
代码随想录
算法
算法
代码随想录
算法训练
营第34天|1005.K次取反后最大化的数组和134. 加油站135. 分发糖果
JAVA代码编写1005.K次取反后最大化的数组和给你一个整数数组nums和一个整数k,按以下方法修改该数组:选择某个下标i并将nums[i]替换为-nums[i]。重复这个过程恰好k次。可以多次选择同一个下标i。以这种方式修改数组后,返回数组可能的最大和。示例1:输入:nums=[4,2,3],k=1输出:5解释:选择下标1,nums变为[4,-2,3]。示例2:输入:nums=[3,-1,0,
Catherinemin
·
2024-01-08 05:29
leetcode
代码随想录
算法
算法
代码随想录
算法训练
营第20天|654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树
JAVA代码编写654.最大二叉树给定一个不重复的整数数组nums。最大二叉树可以用下面的算法从nums递归地构建:创建一个根节点,其值为nums中的最大值。递归地在最大值左边的子数组前缀上构建左子树。递归地在最大值右边的子数组后缀上构建右子树。返回nums构建的*最大二叉树*。示例1:输入:nums=[3,2,1,6,0,5]输出:[6,3,5,null,2,0,null,null,1]解释:递
Catherinemin
·
2024-01-08 05:28
leetcode
代码随想录
算法
算法
java
开发语言
代码随想录
算法训练
营第21天|530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先
JAVA代码编写530.二叉搜索树的最小绝对差给你一个二叉搜索树的根节点root,返回树中任意两不同节点值之间的最小差值。差值是一个正数,其数值等于两值之差的绝对值。示例1:输入:root=[4,2,6,1,3]输出:1示例2:输入:root=[1,0,48,null,null,12,49]输出:1提示:树中节点的数目范围是[2,104]0resList;intmaxCount;intcount;
Catherinemin
·
2024-01-08 05:28
代码随想录
leetcode
算法
算法
java
代码随想录
算法训练
营第22天|235. 二叉搜索树的最近公共祖先 701. 二叉搜索树中的插入操作 450.删除二叉搜索树中的节点
JAVA代码编写235.二叉搜索树的最近公共祖先给定一个二叉搜索树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个结点p、q,最近公共祖先表示为一个结点x,满足x是p、q的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树:root=[6,2,8,0,4,7,9,null,null,3,5]示例1:输入:root=[6,2
Catherinemin
·
2024-01-08 05:28
leetcode
代码随想录
算法
算法
java
代码随想录
算法训练
营
一刷打卡记录:日期打卡2023/10/25day01二分查找有点转不过弯,快慢指针能理解,自己写也可能写不出来,但是能记住了,能看懂,还有其他解法待补充看完,花了挺长时间的2023/10/26day02还好,就是移动窗口一下子想不到2023/10/27day03今天有点忙,反转链表那循环体有点没懂2023/10/28day04题目有点多,链表有点绕啊,细节部分容易出错2023/10/29day05
Catherinemin
·
2024-01-08 05:55
代码随想录
算法
代码随想录
算法训练
营第六十天 |84. 柱状图中最大的矩形
84.柱状图中最大的矩形题目链接:84.柱状图中最大的矩形暴力法比接雨水难一些,但是可以相互转化注意边界条件
努力刷题的oyyo
·
2024-01-07 16:05
代码随想录
算法训练
营Day17 | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236.二叉树的最近公共祖先
LeetCode530二叉搜索树的最小绝对差本题思路:看到二叉搜索树,我们可以知道,它的中序遍历的有序的。并且是单调递增。如下图所示然后我们就可以计算出相隔的两个数之间的差值,然后找到最小的那一个即可定义一个初始为min=第二个元素-第一个元素。然后从第三个元素开始计算,如果发现差值小于等于min,就替换min,遍历结束后,就得到了最小的min看到搜索树,我们要想到中序遍历的结果,是有序的。cla
一个想打拳的程序员
·
2024-01-07 01:56
代码随想录
算法
代码随想录
算法训练
营Day16 | 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
LeetCode654最大二叉树本题思路:我们可以看到每次其实这个找最大值,然后创建节点的过程就是一个二叉树的前序遍历的过程。所以,我们可以递归来完成它。先创找到数组中,最大的值的下标,然后创建根节点然后根据下标,将数组分为,左数组,和右数组然后让根节点的左孩子等于左数组中的最大值然后让根节点的右孩子等于右数组中的最大值每一次递归之前,都要重新划分左数组和右数组!注意:分割数组的时候,要注意区间。
一个想打拳的程序员
·
2024-01-07 01:23
代码随想录
算法
day58
算法训练
|单调栈part01
参考:代码随想录单调栈的使用情况:通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。时间复杂度为O(n)。单调栈的本质是空间换时间,因为在遍历的过程中需要用一个栈来记录右边第一个比当前元素高的元素,优点是整个数组只需要遍历一次。更直白来说,就是用一个栈来记录我们遍历过的元素,因为我们遍历数组的时候,我们不知道之前都遍历了哪些元素,以至于
AdrianLeon
·
2024-01-06 23:20
数据结构
day55
算法训练
|动态规划part15
392.判断子序列给定字符串s和t,判断s是否为t的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。其实就是最长公共子序列的变种题:如果公共子序列长度等于s,那么返回truepublicbooleanisSubsequence(Strings,Stringt){intlen
AdrianLeon
·
2024-01-06 23:50
动态规划
算法
day 57
算法训练
|动态规划part17
参考:代码随想录647.回文子串1.dp数组(dptable)以及下标的含义是不是能找到一种递归关系,也就是判断一个子字符串(字符串的下表范围[i,j])是否回文,依赖于,子字符串(下表范围[i+1,j-1]))是否是回文布尔类型的dp[i][j]:表示区间范围[i,j](注意是左闭右闭)的子串是否是回文子串,如果是dp[i][j]为true,否则为false。dp数组无法直接得出回文数量,但是可
AdrianLeon
·
2024-01-06 23:50
算法
动态规划
算法训练
day60|单调栈part0
参考:代码随想录84.柱状图中最大的矩形要求当前柱形的左右两边第一个比他小的位置对于高度为5的柱子(index为2)mid他的左边第一个比他小的柱子为1,index为1left他的右边第一个比他小的柱子高度为2,index为4right对5来说,(left,right)范围内(不包括left,right)都是比5高的柱,所以对5的体积可以是5(h[mid])*(right-left-1)双指针解法
AdrianLeon
·
2024-01-06 23:18
算法
算法训练
营Day38(动态规划)
理论基础动态规划的常见内容:1动归基础:例如,斐波那契、爬楼梯2背包问题:3打家劫舍4股票问题5子序列问题常见误区:递归公式只是一部分,不要把注意力都集中在这里需要考虑的步骤1dp数组的以及下标的含义2递推公式3、dp数组如何初始化-----很有考究‘4、遍历顺序遍历顺序也要考究,比如背包问题,先遍历背包还是先遍历物品5打印dp数组509.斐波那契数509.斐波那契数-力扣(LeetCode)cl
不吃青椒!
·
2024-01-06 18:04
动态规划
算法
算法训练
营Day39(动态规划)
62.不同路径62.不同路径-力扣(LeetCode)classSolution{publicintuniquePaths(intm,intn){//1dp数组mn代表位置,dp[m][n]代表到达这里的途径个数int[][]dp=newint[m][n];//3初始化for(inti=0;i
不吃青椒!
·
2024-01-06 17:28
动态规划
算法
2023.11.4第二次
算法训练
赛(ABC327)
A题B题C题D题E题F题贴点代码,鞭策一下自己#includeusingnamespacestd;typedeflonglongll;#definelen(x)((int)((x).size()))#definePQpriority_queue#defineall(x)(x).begin(),(x).end()#definesep(x)setprecision((x))constintmod=99
永远不会的CC
·
2024-01-06 16:08
算法训练赛
算法
代码随想录
算法训练
营第三十七天|738.单调递增的数字、968.监控二叉树
738.单调递增的数字题目链接:.-力扣(LeetCode)文档讲解:代码随想录视频讲解:贪心算法,思路不难想,但代码不好写!LeetCode:738.单调自增的数字_哔哩哔哩_bilibiliC++代码:classSolution{public:intmonotoneIncreasingDigits(intn){stringstrNum=to_string(n);intflag=strNum.s
EstherLockhart
·
2024-01-06 11:33
代码随想录算法训练营
算法
代码随想录
算法训练
营第三十六天|435. 无重叠区间、763.划分字母区间、56. 合并区间
435.无重叠区间题目链接:力扣(LeetCode)官网-全球极客挚爱的技术成长平台文档讲解:代码随想录视频讲解:贪心算法,依然是判断重叠区间|LeetCode:435.无重叠区间_哔哩哔哩_bilibiliC++代码:classSolution{public:staticboolcmp(constvector&a,constvector&b){returna[1]>&intervals){if(
EstherLockhart
·
2024-01-06 11:03
代码随想录算法训练营
算法
代码随想录
算法训练
营第三十五天|860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球
860.柠檬水找零题目链接:力扣(LeetCode)官网-全球极客挚爱的技术成长平台文档讲解:代码随想录视频讲解:贪心算法,看上去复杂,其实逻辑都是固定的!LeetCode:860.柠檬水找零_哔哩哔哩_bilibiliC++代码:classSolution{public:boollemonadeChange(vector&bills){intfive=0,ten=0,twenty=0;for(i
EstherLockhart
·
2024-01-06 11:33
代码随想录算法训练营
算法
代码随想录
算法训练
营第三十一天|455.分发饼干、376. 摆动序列、53. 最大子序和
455.分发饼干题目链接:力扣(LeetCode)官网-全球极客挚爱的技术成长平台文档讲解:代码随想录视频讲解:贪心算法,你想先喂哪个小孩?|LeetCode:455.分发饼干_哔哩哔哩_bilibiliC++代码:classSolution{public:intfindContentChildren(vector&g,vector&s){sort(g.begin(),g.end());sort(
EstherLockhart
·
2024-01-06 11:32
代码随想录算法训练营
算法
代码随想录
算法训练
营第三十二天|122.买卖股票的最佳时机II、 55. 跳跃游戏、45.跳跃游戏II
122.买卖股票的最佳时机II题目链接:力扣(LeetCode)官网-全球极客挚爱的技术成长平台文档讲解:代码随想录视频讲解:贪心算法也能解决股票问题!LeetCode:122.买卖股票最佳时机II_哔哩哔哩_bilibiliC++代码:classSolution{public:intmaxProfit(vector&prices){intresult=0;for(inti=1;i&nums){i
EstherLockhart
·
2024-01-06 11:32
代码随想录算法训练营
算法
上一页
24
25
26
27
28
29
30
31
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他