首页 > TAG信息列表 > Dq

239.sliding-window-maxium 滑动窗口最大值

采用双端队列deque,并且保证deque从前往后依次递减,并且出现在deque里面的相邻两数,其在原滑动窗口中,两数中间的数一定比这两个数小。为了保证这一点,在push_back()时,如果deque.back()小于要push_back()的数,则执行pop_back(),直到deque为空或者不小于为止。 #include <deque> #include

牛客多校补题3

title: 牛客多校补题3 author: Sun-Wind date: July 26, 2022 J 思路 模拟+搜索,比赛的时候就一个细节写错了 #include <bits/stdc++.h> #define int long long #define endl '\n' using namespace std; const int N = 5e5 + 10, mod = 1e9 + 7, INF = 0x3f3f3f3f3f3f3f3f; int

LeetCode 103 Binary Tree Zigzag Level Order Traversal 双端队列 Deque

Given the root of a binary tree, return the zigzag level order traversal of its nodes' values. (i.e., from left to right, then right to left for the next level and alternate between). Solution 由于是 \(zigzag\) 的形式,刚开始的思路是用 \(stack\) 来维护反序,但是

数学-林士谔算法

代数基本定理 1 代数基本定理 任何复系数一元n次多项式(n至少为1)方程在复数域上至少有一根。 n次复系数多项式方程在复数域内有且只有n个根,重根按重数计算。 证明不会 2 虚根成对定理 在实系数多项式分解中,虚根成对分解,实根单一分解,因此对于奇数次多项式,一定有实根。 简单理解: 假设

UVA11573 Ocean Currents

题目链接 题目 见链接。 题解 知识点:BFS。 这道题显然用BFS,但发现洋流方向会破坏时间的有序性,但注意到洋流时间花费是 \(0\) ,因此只需要用双端队列即可,洋流方向扩展直接放队头,其他方向放队尾。 同样要注意时间线在本次就改变,因此锁点要在之后锁。 时间复杂度 \(O(?)\) 空间复杂度

DDR4 SDRAM - 2. 初始化、训练和校准

如前所诉,本文为翻译学习大佬博客。强烈推荐直接去看大佬原博:DDR4 SDRAM - Initialization, Training and Calibration 引言 当带有DRAM子系统的设备上电后,在 DRAM 进入运行状态之前会发生许多事情。 以下来自JEDEC规范的状态机显示了DRAM从上电后的各种状态切换。         

P2556 [AHOI2002]黑白图像压缩

题目描述 选修基础生物基因学的时候, 小可可在家里做了一次图像学试验。 她知道:整个图像其实就是若干个图像点(称作像素)的序列,假定序列中像素的个数总是 8 的倍数, 于是每八个像素可以转换成一个叫做字节的数, 从而这个表示图像的像素序列就被转换成了字节的序列。 所谓的字节就是一

l2-3 加密信息 (25 分)

给定一个长度为n(n<=5×105)的加密字符串S,解密方式如下: 1.初始时字符串T为空. 2.从头遍历S字符串,令i=1,2,3...,n, 若S的第i个字符是R,那么翻转字符串T,否则将该字符加入字符串T中. 3. 在上述操作结束后,若T串有两个连续的字符相同, 那么就删除这两个字符,直到T串中没有两个相同的

【刷题】【stl】扑克游戏

题面:   有n张扑克牌,记为1 2 …… n,按照一定 的规律排放后,可以使翻开的第一张牌是 1,然后把下面一张牌放到整副牌的末尾, 再翻下一张刚好是2,再把后一张牌放到 整副牌的末尾,下面一张是3……如此继 续下去,直到最后一张牌n翻出。试编程 解决这个问题。 【输入说明】   一个正整数n( 1

二叉树的按层打印与ZigZag打印

二叉树的按层打印与ZigZag打印 题目:二叉树的按层打印与ZigZag打印 《程序员代码面试指南》第39题 P132 难度:尉★★☆☆ 按层打印原本是非常基础的内容,对二叉树做简单的宽度优先遍历即可。不过本题有额外的要求,即同一层的节点必须打印在同一行上,并且要求输出行号。 本题使用了2个No

基于STM32设计的指针式电子钟与万年历

1. 项目简介 这是基于STM32设计的一个指针式电子钟+万年历小项目,采用3.5寸的LCD屏显示时钟,日历、温度、天气,支持触摸屏调整设置时间,设置闹钟,查看日历等等。整体项目主要是技术点就是LCD屏的图形绘制。比如: 时钟的时针绘制、分针、秒针、表盘、日历绘制等等。 时钟的时间是直接

LeetCode 49. 二叉树的右视图

题目描述: 给定一个二叉树的根节点 root, 想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 示例 2: 输入: [1,null,3] 输出: [1,3] 示例 3: 输入: [] 输出: [] 提示: 二叉树的节点个数的范

java cpu100% 分析过程

分析工具: MAT 一、准备工作 1、修改tomcat/bin 中的文件: #重启启动,tomcat 启动命令:./startup.sh && tail -f ../logs/catalina.out 启动后, 当内存不足等异常情况, 会先生成文件heapdump.hprof, 后期根据该文件分析程序哪里出现问题。 2、使用MAT 工具分析文件heapdump.hprof 1)从

HackTheBox-Brainy‘s Cipher

文章目录 概述题目解题思路解题代码 概述 Brainy’s Cipher是HackTheBox密码学的题目,题目地址https://app.hackthebox.eu/challenges/brainys-cipher,主要考点是RSA。 关于RSA的基础知识,可参考文章HackTheBox-Weak RSA 题目 下载附件并解压缩,得到如下文本 为brainfuck

逆向分析学习 - 恢复 Struct

题目在这里。 https://buuoj.cn/challenges#[WUSTCTF2020]level4 用ida载入文件。 Shift+F9切换到Enum窗口 按Ins键, 新建 名称 node。 00000008 node ends ; 光标在这里按d 新建 按D新建属性, 再按可切换大小 00000000 node struc ; (sizeof=0x1,

C++的数据类型操作 - deque

使用C++做算法题时,与deque相关的常用操作: 头文件 #include<deque> 创建 deque dq; 前插 dq.push_front(); 后插 dq.push_back(); 前删 dq.pop_front(); 后删 dq.pop_back(); 前查询 dq.front(); 后查询 dq.back(); 插入 dq.insert(index, n); 删除 dq.

python数据模型

特殊方法 如何使用特殊方法 特殊方法的存在是为了被Python解释器调用的,你自己不需要调用 自定义类型:len(myObject)执行时,Python会自动调用由你实现的__len__方法 内置类型(list、str…):__len__会直接返回PyVarObject里的ob_size属性,完全不会调用任何方法。PyVarObject表示

84. 柱状图中最大的矩形

84. 柱状图中最大的矩形: 题目链接 :84. 柱状图中最大的矩形 题目:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 思路: 1、单调栈+哨兵: (1)矩形面积的计算=底*高,这是毋庸置疑的,那么需要的到三

CF351D Jeff and Removing Periods Ⅱ

题意理解及思路转换详见:link 同样的道理,我们只需要预处理出来 \(nxt\) 数组和 \(del\) 数组,然后直接莫队维护就可以了。 摆一段最关键的函数吧: void work(int l , int zx){ if(dq[a[zx]].empty()) { nb[a[zx]] = false; maxi --; return ; }

剑指Offer | 水水怪第day06_搜索与回溯算法(简单)

剑指 Offer 32 - I. 从上到下打印二叉树 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回: [3,9,20,15,7] 提示: 节点总数 <= 1000 方法一:copy class Solution

Codeforces Round #744 (Div. 3)

A.Casimir’s String Solitaire 题意:给定一个只包含’A’,‘B’,'C’的字符串,判断’A’的数量加’C’的数量是否等于’B’的数量。 用count()直接数就可以。 #include <bits/stdc++.h> using namespace std; int main() { int n; cin>>n; while(n--) {

leetcode剑指 Offer 59 - I. 滑动窗口的最大值

    题目链接:力扣 题意:给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 方法一: 可重复集合,时间复杂度O(nlogn),logn来自mst的排序 class Solution { public: vector<int> maxSlidingWindow(vector<int>& nums, int k) { vector<int>

[PYTHON] collections模块的deque对象

一、概念 collections.deque(双端队列)支持从任意一端增加和删除元素。 deque是线程安全的、内存高效的队列,它被设计为从两端追加和弹出都非常快。 deque可以作为栈,也可以作为队列。 deque([iterable[,maxlen]]) #构造函数 二、deque对象dq支持下列方法: 方法说明dq.append(x)

当列表不是首选时

数组 from array import array # 引入数组类型 from random import random floats=array('d',(random()for i in range(10**7))) # 利用一个可迭代对象来创建一个双精度浮点数的列表(类型码是'd'),这里的可迭代对象是一个生成器表达式 floats[-1]# 查看数组的最后一个元素 0.3980

共享栈的实现以及基本功能

1、共享栈的实现以及基本功能 /** * 共享栈的实现以及基本功能 * 共享栈主要是为了节约内存,但是我们一般只用两个栈共享,多的话其实用的比较多的是链式共享栈,下节我们讲 * */ #include <stdio.h> #include <mm_malloc.h> #define MAXSIZE 50 #define OK 1 #define