算法学习专栏——二分法 一、数的范围(简单)给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。 对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 00 开始计数)。 如果数组中不存在该元素,则返回 -1 -1。 输入格式第一行包含整数 n 和 q,表示数组长度和询问个数。 第二行包含 n 个整数(均在 1∼10000 范围内),表示完整数组。 接下来 q 行,每行包含一个整数 k,表示一个询问元 2024-02-13 算法学习专栏 #算法 #二分 #C++基础
算法学习专栏——排序算法(二) 一、归并排序(简单+)给定你一个长度为 n 的整数数列。 请你使用归并排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式输入共两行,第一行包含整数 n。 第二行包含 n 个整数(所有整数均在 1∼10^9^范围内),表示整个数列。 输出格式输出共一行,包含 n 个整数,表示排好序的数列。 数据范围1≤n≤100000 输入样例:1253 1 2 4 5 输出样例:11 2024-02-13 算法学习专栏 #算法 #排序算法
算法学习专栏——排序算法(一) 前言 接下来我们将要讲解的是排序算法,但是我们一般情况下是很少会直接用到这些算法的,因为我们C++有内置的排序函数sort(),这个内置函数使用的排序算法实际上是快速排序+优化决策,比我们下面会介绍的快速排序的速度还要快上4倍左右。 但是我们任何需要了解如何使用这个算法,因为这是你入门的必经之路!本人目前所见过的排序算法已有10种多,下面我将为大家讲解以下5种最值得讲解的排序算法,分别是:桶 2024-02-13 算法学习专栏 #算法 #排序算法
算法学习专栏——Tire算法 前言:字典树(Tire)定义 Tire是一种能够快速插入和查询字符串的多叉树结构 根结点编号为0,初始位置,不存任何东西。 其他节点: 1.标记路径 2.记录单词插入次数 边: 表示字符 Tire维护字符串集合,支持两种操作*void insert(char s): 向集合插入一个字符串 *void query(char s): 在集合中查询一个字符串 建字典树 下面我们就可以准备代码编写需要 2024-02-13 算法学习专栏 #练习 #算法 #字典树
算法学习专栏——单调队列+优先队列 一、发射站某地有 N 个能量发射站排成一行,每个发射站 i 都有不相同的高度 Hi,并能向两边(当然两端的只能向一边)同时发射能量值为 Vi 的能量,并且发出的能量只被两边最近的且比它高的发射站接收。 显然,每个发射站发来的能量有可能被 0 或 1 或 2 个其他发射站所接受,出于安全考虑,每个发射站接收到的能量总和是我们很关心的问题。 由于数据很多,现在只需要你帮忙计算出接收最多能量的发射站接收 2024-02-13 算法学习专栏 #练习 #算法 #贪心
算法练习专栏——队列+单调队列 前言 队列是什么? 我们先想一下我们生活中排队的时候的样子。这样一支队伍我们有什么特点。我们队伍最前面的人可以结账离开(出队),最后的人可以随意进入(入队)。中间的人就不可以随意离开(都已经排队了,不想放弃,就这样理解)。 一、模拟队列(简单)实现一个队列,队列初始为空,支持四种操作: push x – 向队尾插入一个数 x; pop – 从队头弹出一个数; empty – 判断队列是否 2024-02-13 算法学习专栏 #算法 #滑动窗口算法
算法学习专栏——栈(二) 前言 今天的笔记主要就是扩展一下昨天笔记的内容,让我们对于栈的操作的理解加深。同时还需要学会灵活应用栈来解决一些实际问题。最后还需要学习一个难度比较高的算法题目:单调栈,使用文字讲解有点难度,现在我会尝试使用属于我自己的方式把这个算法尽可能可以以动画的形式展现出来,如实在有困难,就直接联系本人吧。 一、后缀表达式(简单+)前言 大家可以通过下面这道题目大概了解一下后缀表达式是什么 后缀表达式的 2024-02-12 算法学习专栏 #算法 #数据结构 #C++基础
算法学习专栏——栈(一) 前言 先照顾一下基础薄弱的同学,介绍一下什么是栈。 栈就是一个头开底闭的一个盒子,首先看一下下面的动画视频来了解一下栈 进栈操作(栈顶插入一个元素):这个过程是一个一个进的,球1进完,球2再进 出栈操作(从栈顶弹出一个数):必须按照从上往下的顺序弹出栈里元素操作,比如下图,不可以先将球1拿出来,必须先将球2拿出来之后再拿球1 空栈:栈内没有小球(元素) 一、模拟栈(简单-)实现一个 2024-02-11 算法学习专栏 #算法 #数据结构 #C++基础
算法学习专栏——进制转换类型题目 位运算按位与(&)计算方式: 有0出0,全1出1 例如: 4&5改为二进制 4 –> 0000 0100 5 –> 0000 0101 0000 0100 <–4 因此4&5=4 按位或(|)计算方式: 有1出1,全0出0 例如: 4&5改为二进制 4 –> 0000 0100 5 –> 0000 0101 000 2024-02-11 算法学习专栏 #算法 #进制转换 #C++基础
算法学习专栏——C++需要知道的一些基础知识例题 一、天数转换(简单–)读取对应于一个人的年龄(以天为单位)的整数值,并转化为年,月和日表示方式输出,年、月、日分别对应 ano(s), mes(es), dia(s)。 注意:为了方便计算,假设全年 365天,每月 30 天。 数据保证,不会出现 12个月和几天的情况,例如 360,363 或 364。 输入格式输入一个整数 N。 输出格式参照输出样例,输出转换后的天数表达。 数据范围$$1≤ N 2024-02-09 算法学习专栏 #算法 #C++基础