数据结构和算法
文章平均质量分 58
热季流星
海压竹枝低复举,风吹山角晦还明
展开
-
管中窥豹 | 一道题的六种解法吃透动态规划
LeetCode 64.最短路径和 给定一个包含非负整数的 m x n 矩阵 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 类似题 剑指offerII 47.礼物的最大价值 LeetCode 120.三角形最小路径和 动态规划的经典题 设dp[i][j]表示从起点到当前格子走过的最短路径和; 状态转移方程易得: dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j] 注意一下边界.原创 2021-10-09 00:04:56 · 243 阅读 · 0 评论 -
两个栈模拟队列的最大容量问题
如何使用两个栈模拟队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty); 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返回队列开头的元素 boolean empty() 如果队列为空,返回 true ;否则,返回 false 分析 栈(Stack)特点:先进后出 队列(Queue)特点:现进先出 所以一个栈作为入队栈,一个栈作原创 2021-05-12 20:29:03 · 1162 阅读 · 1 评论 -
树详解(上)|LeetCode|javascript|递归法|一招鲜吃遍天
准备知识 相关术语 树中每个元素都叫做节点,位于树顶部的节点叫做根节点,没有父节点,节点分祖先节点、后代节点 深度:节点祖先节点的个数 树的高度:最大的节点的深度 二叉搜索树:二叉树的一种,但是左侧子节点值比父节点的值小,右侧子节点的值比父节点的值大 LeetCode上最常用二叉搜索树 注:下列题目使用递归,迭代法待续(2020.05.09) N叉树的后序遍历 /** * // Definition for a Node. * function Node(val,children) { * t原创 2021-05-09 03:43:19 · 214 阅读 · 0 评论 -
LeetCode[每日一题]897.递增顺序搜索树
4.25 897.递增顺序搜索树 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 题目分析 先用中序遍历获得二叉搜索树的每个节点值; 中序遍历的结果是从小到大的; 然后创建新的起点节点,一个接一个将中序遍历的结果串到递增顺序搜索树. 解释 一个接一个 curNode = curNode.right; 串 for (le原创 2021-04-25 18:42:34 · 70 阅读 · 0 评论 -
LeetCode[每日一题] 35.搜索插入位置 / 关于二分查找的思考
4.22 35.搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 分析 在一个排序数组中查找一个数值的索引,使用二分查找是最直观的思路; 难点在于如何在目标数不存在的情况下返回应该插入的位置. 1、暴力查找,只需要找到第一个大于等于target的数字位置,返回其索引, 时间复杂度O(n) 2、二分查找: ①target存在,返回索引 ②target不存在,返回left var searchInsert = functi原创 2021-04-22 23:07:38 · 74 阅读 · 1 评论