数据结构与算法
不秃头的小黄人
这个作者很懒,什么都没留下…
展开
-
单调栈的应用
滑动窗口最大值 此题是滑动窗口中的数字个数是固定的,如果窗口中的数字个数在动态变化,比如R右边界增加,L不变… 那有没有一种数据结构结构,可以让我们以O(1)的复杂度得到此时滑动窗口中的最大值或者最小值呢??? 有,那就是单调栈!!!单调栈可以使用双端队列来实现!! 该单调栈中保证从头部到尾部保证数据的严格递增或递减; 当R往右移动一个位置时,如果此时R位置的数,满足单调中的严格递增或递减顺序,则放入到队列尾部 如果不满足,则依次取出队列中的值,直到放入的数满足严格递增或递减的顺序 当L往右动时,如果L.原创 2021-11-21 17:47:18 · 1243 阅读 · 0 评论 -
Java快慢指针的妙用!!! 删除链表的倒数第 N 个结点
原创 2021-09-01 17:00:14 · 164 阅读 · 0 评论 -
力扣102题 二叉树层序遍历
解题思路:广度优先,队列,空间换时间 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, .原创 2021-05-03 16:50:22 · 254 阅读 · 0 评论 -
链栈 顺序栈(c++代码)
栈1. 顺序栈2.链栈 1. 顺序栈 #include <iostream> using namespace std; #define MAXSIZE 12 #define OK 1 #define ERROR 0 //顺序栈 typedef struct Sqstack { int* top; int* base; int stacksize; }Sqstack; int initSatck(Sqstack& s) { //构造一个空栈 s.base = new原创 2020-05-18 19:06:10 · 410 阅读 · 0 评论 -
(含头结点)单链表的节点删除,增加---最易犯错!!!
单链表增加删除1.节点插入2.节点删除 1.节点插入 题目来源于PTA 本题要求实现带头结点的单链表插入操作,插入成功返回1,否则返回0。 函数接口定义: int insert_link ( LinkList L,int i,ElemType e); L是单链表的头指针,i为插入位置,e是插入的数据元素,插入成功返回1,否则返回0。 裁判测试程序样例: #include <stdio.h> #include <stdlib.h> typedef int ElemType; t原创 2020-05-12 23:34:27 · 804 阅读 · 0 评论