
数据结构
小菜鸡在努力啊
余生很长,请多指教。
展开
-
二叉树的三种遍历(非递归)
前序遍历:144. 二叉树的前序遍历给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x)原创 2020-09-14 11:53:39 · 229 阅读 · 0 评论 -
P3865 【模板】ST表
题目背景这是一道ST表经典题——静态区间最大值请注意最大数据时限只有0.8s,数据强度不低,请务必保证你的每次查询复杂度为 O(1)。若使用更高时间复杂度算法不保证能通过。如果您认为您的代码时间复杂度正确但是 TLE,可以尝试使用快速读入:inline int read(){ int x=0,f=1;char ch=getchar(); while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();} while (isdigit(ch)){x=x*原创 2020-07-05 15:37:27 · 183 阅读 · 0 评论 -
P5788 【模板】单调栈
5788题目背景模板题,无背景。2019.12.12 更新数据,放宽时限,现在不再卡常了。题目描述给出项数为 nn 的整数数列 a_{1 \dots n}a1…n 。定义函数 f(i)f(i) 代表数列中第 ii 个元素之后第一个大于 ai 的元素的下标,即 f(i)=\min_{i<j\leq n, a_j > a_i} {j}f(i)=mini<j≤n,ajai {j}。若不存在,则 f(i)=0f(i)=0。试求出 f(1\dots原创 2020-06-29 17:28:46 · 560 阅读 · 0 评论 -
洛谷1886 滑动窗口 /【模板】单调队列
1886题目描述有一个长为 nn 的序列 aa,以及一个大小为 kk 的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。例如:The array is [1,3,-1,-3,5,3,6,7], and k = 3。输入格式输入一共有两行,第一行有两个正整数 n,kn,k。 第二行 nn 个整数,表示序列 aa输出格式输出共两行,第一行为每次窗口滑动的最小值第二行为每次窗口滑动的最大值#include <iostream>using原创 2020-06-29 16:47:14 · 235 阅读 · 0 评论