数据结构
zhuifengmax
这个作者很懒,什么都没留下…
展开
-
验证二叉搜索树
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。来源:力扣(LeetCode)题解:每一个节点不能单纯的判断是否大于或者小于其父亲节点,而是应该在一个区间里面。这个区间有一个最大值和最小值,每次访问其左节点时,(这里有这样一个关系 a->b,我们必须保证b的右节点除了大于b外,还必须小于a)更新最大值。访问右节点时更新最原创 2022-01-26 11:47:50 · 298 阅读 · 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 · 487 阅读 · 0 评论 -
LeetCode 矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。示例 1:输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]来源:力扣(LeetCode)我们可以用矩阵的第一行和第一列代替方法一中的两个标转载 2022-01-16 20:05:06 · 189 阅读 · 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 · 69 阅读 · 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 · 63 阅读 · 0 评论 -
动态顺序存储结构
动态顺序存储结构//动态存储结构#include <stdio.h>#include <malloc.h>#include <stdlib.h>#define LIST_INIT_SIZE 100//当前所拥有的空间#define LISTINCREMENT 10//每次新开辟的空间#define OVERFLOW -2typedef struct { int *elem; int length; int listsize;}Sqlist;voi原创 2020-10-16 10:48:44 · 608 阅读 · 0 评论