![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
zhuifengmax
这个作者很懒,什么都没留下…
展开
-
验证二叉搜索树
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。来源:力扣(LeetCode)题解:每一个节点不能单纯的判断是否大于或者小于其父亲节点,而是应该在一个区间里面。这个区间有一个最大值和最小值,每次访问其左节点时,(这里有这样一个关系 a->b,我们必须保证b的右节点除了大于b外,还必须小于a)更新最大值。访问右节点时更新最原创 2022-01-26 11:47:50 · 305 阅读 · 0 评论 -
LeetCode:二叉树层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。题解:这里我们给出递归的方式遍历/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {}原创 2022-01-22 10:05:03 · 515 阅读 · 0 评论 -
买卖股票的最好时机
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7原创 2021-12-23 15:11:45 · 73 阅读 · 0 评论 -
最大子数组和
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6 。来源: 力扣(LeetCode)解题思路: 采用动态规划的思想,我们令dp[i]就是代表以第i 个数结尾的「连续子数组的最大和」.那么我们如何求 f(i) 呢?我们可以考虑nums[i] 单独成为一段还是加原创 2021-12-22 20:48:36 · 65 阅读 · 0 评论 -
有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。示例 1:输入: “()”输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: true利用栈的特性来解题,算法设计思路如下1)凡出现左括号,则进栈;2)凡出现右括号,首先检查栈是否空。若栈空,则表明该“右括号”多余;否则和栈顶元素比较原创 2021-01-21 10:45:33 · 74 阅读 · 0 评论 -
三个数的最大乘积
给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。PS:给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。我们将数组从大到小排序(长度为len),会有以下三种情况.我们首先规定,a=nums[0],b=nums[1],c=nums[2],c=nums[len-1],d=nums[len-2],e = nums[len-3]1:全是正数,毫无疑问是答案就是c×d×e2: 全是负数,则答案是c×d×c3:倒数第三个数及以前是负数,则此时要想结原创 2021-01-20 20:24:19 · 804 阅读 · 0 评论