- 博客(23)
- 收藏
- 关注
原创 【力扣每日一题】【2022-3-8】【蜡烛之间的盘子】
蜡烛之间的盘子原题传送门代码:class Solution {public: vector<int> platesBetweenCandles(string s, vector<vector<int>>& queries) { int len = s.size(); vector<int> psum(len); //前缀和数组 vector<int> lp(len); //离该
2022-03-08 12:38:57 237
原创 【力扣每日一题刷题记录】【第N个数字】【含解题代码C++】
题目来源 ====》》 【力扣第400题. 第 N 位数字】题目描述给你一个整数 n ,请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …] 中找出并返回第 n 位数字。示例 1:输入:n = 3输出:3示例 2:输入:n = 11输出:0解释:第 11 位数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, … 里是 0 ,它是 10 的一部分。提示:1 <= n <= 231 -.
2021-11-30 01:15:11 848
原创 【力扣刷题记录】【423.从英文中重建数字】
题目原址力扣第423题(从英文中重建数字)题目描述给你一个字符串 s ,其中包含字母顺序打乱的用英文单词表示的若干数字(0-9)。按升序返回原始的数字。示例 :输入:s = “owoztneoer”输出:“012”输入:s = “fviefuro”输出:“45”提示:1 <= s.length <= 105s[i] 为 [“e”,“g”,“f”,“i”,“h”,“o”,“n”,“s”,“r”,“u”,“t”,“w”,“v”,“x”,“z”] 这些字符之一
2021-11-24 14:00:16 687
原创 【C++】 【判定质数】 【分解质因数】【筛质数(编制质数表)】
数学知识之质数质数的定义“质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。”比1大但不是素数的数称为合数。1和0既非素数也非合数。素数在数论中有着很重要的作用。质数的分布规律是以36N(N+1)为单位,随着N的增大,素数的个数以波浪形式渐渐增多。质数的性质质数具有许多独特的性质:(1)质数p的约数只有两个:1和p。(2)初等数学基本定理:任一大于1的自然数,要么本身是质数,要么可以分解为几个质数之积,且这种分解是唯一的。(3)质数的个数是无限的。(4)质数的个数公式
2021-11-23 16:12:42 1612
原创 C++算法题 & 食物链 & 带权并查集
题目题目来源AcWing第240题动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B 吃 C,C 吃 A。现有 N 个动物,以 1∼N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这 N 个动物所构成的食物链关系进行描述:第一种说法是 1 X Y,表示 X 和 Y 是同类。第二种说法是 2 X Y,表示 X 吃 Y。此人对 N 个动物,用上述两种说法,一句接一句地说出 K 句话,这 K 句话有的是真的,
2021-10-28 12:30:40 203
原创 C++数据结构 & 并查集 & 连通块中点数量
并查集背景及意义并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内赛题中。其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上过大,计算机无法承受;即使在空间上勉强通过,运行的时间复杂度也极高,根本就不可能在比赛规定的运行时间(1~3秒)内计算出试题需要的结果,只能用并查集来描述。并查集是一种树型的数据结构,
2021-10-28 11:25:39 413
原创 C++算法题 & 最大异或对 & trie树
题目题目来源AcWing第143题在给定的 N 个整数 A1,A2……AN 中选出两个进行 xor(异或)运算,得到的结果最大是多少?输入格式第一行输入一个整数 N。第二行输入 N 个整数 A1~AN。输出格式输出一个整数表示答案。数据范围1 ≤ N ≤ 105,0 ≤ Ai <231输入样例:31 2 3输出样例:3解题思路首先可以很容易想到暴力枚举的办法for (int i = 0; i < n; i++){ for (int j =
2021-10-25 13:05:43 226
原创 C++ &数据结构 &Trie树&字典树 (trie字符串统计)
Trie树定义又称单词查找树,字典树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。基本性质根节点不包含字符,除根节点以外每个节点只包含一个字符。从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。每个节点的所有子节点包含的字符串不相同。例图该trie树存放了at,bee,b
2021-10-22 01:14:25 316
原创 KMP算法(暴力破解法的优化以及求next数组)
前言KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度O(m+n) 。问题是:在主串S中找到第一次出现完整子串P时的起始位置。说简单点就是我们平时常说的关键字搜索。模式串就是关键字,如果它在一个
2021-10-19 17:41:09 499
原创 C++单调队列实现滑动窗口(数组实现队列)
题目来源AcWing第154题题目给定一个大小为 n≤106 的数组。有一个大小为 k 的滑动窗口,它从数组的最左边移动到最右边。你只能在窗口中看到 k 个数字。每次滑动窗口向右移动一个位置。以下是一个例子:该数组为 [1 3 -1 -3 5 3 6 7],k 为 3。数组最大值最小值[1 3 -1] -3 5 3 6 7-131 [3 -1 -3] 5 3 6 7-331 3 [-1 -3 5] 3 6 7-351 3 -1 [-3 .
2021-10-17 23:26:05 682
原创 C++表达式求值(栈)
AcWing第3302题题目给定一个表达式,其中运算符仅包含 +,-,*,/(加 减 乘 整除),可能包含括号,请你求出表达式的最终值。注意:数据保证给定的表达式合法。题目保证符号 - 只作为减号出现,不会作为负号出现,例如,-1+2,(2+2)*(-(1+1)+2) 之类表达式均不会出现。题目保证表达式中所有数字均为正整数。题目保证表达式在中间计算过程以及结果中,均不超过 231−1。题目中的整除是指向 0 取整,也就是说对于大于 0 的结果向下取整,例如 5/3=1,对于小于 0 .
2021-10-17 11:44:15 3540
原创 C++单调栈
题目来源==》AcWing第830题题目给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。输入格式第一行包含整数 N,表示数列长度。第二行包含 N 个整数,表示整数数列。输出格式共一行,包含 N 个整数,其中第 i 个数表示第 i 个数的左边第一个比它小的数,如果不存在则输出 −1。数据范围1≤N≤1051≤数列中元素≤109输入样例:53 4 2 7 5输出样例:-1 3 -1 2 2解题思路分析题目,发现可以利用栈的特点.
2021-10-14 16:09:28 644
原创 C++数组实现双指针链表
题目来源 ==>AcWing第827题题目实现一个双链表,双链表初始为空,支持 5 种操作:在最左侧插入一个数;在最右侧插入一个数;将第 k 个插入的数删除;在第 k 个插入的数左侧插入一个数;在第 k 个插入的数右侧插入一个数现在要对该链表进行 M 次操作,进行完所有操作后,从左到右输出整个链表。注意:题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照插入的时间顺序,这 n 个数依次为:第 1 个插入的数,第 2 个插入的.
2021-10-14 00:27:00 124
原创 数组实现单链表(C++)
题目题目来自 AcWing第826题实现一个单链表,链表初始为空,支持三种操作:向链表头插入一个数;删除第 k 个插入的数后面的数;在第 k 个插入的数后插入一个数。现在要对该链表进行 M 次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照插入的时间顺序,这 n 个数依次为:第 1 个插入的数,第 2 个插入的数,…第 n 个插入的数。输入格式第一行包含整数 M,表示操作次数。接
2021-10-13 17:23:53 1104 1
原创 c++求区间和(实现离散化)
区间和题源AcWing802题:https://www.acwing.com/problem/content/804/题目假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c。接下来,进行 m 次询问,每个询问包含两个整数 l 和 r,你需要求出在区间 [l,r] 之间的所有数的和。输入格式第一行包含两个整数 n 和 m。接下来 n 行,每行包含两个整数 x 和 c。再接下来 m 行,每行包含两个整数 l 和 r。
2021-10-13 01:55:11 1158
原创 C++ 高精度加减法 (vector实现)
前言在C++中,数据范围超过long long 的范围时,就要考虑到高精度,下面为运用容器实现的高精度加减法。(刚学,可能存在瑕疵)基本步骤对于输入的数据可以用string接收。然后遍历要运算的数据存入容器vector< int >中。一. 加法设置一个int = temp变量存放将两个数据逐位相加的值,并加上进位,temp %10 则为结果在该位上的值,temp / 10则是下一位的进位(0或1)。每一位都相加到最后。加完后再判断一下是否有进位。二. 减法首先判断两个数的大
2021-10-08 16:16:46 2022
原创 C++ 二分查找模板(折半查找)
基本概念二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是:(这里假设数组元素呈升序排列)将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止;如 果x<a[n/2],则我们只要在数组a的左半部继续搜索x;如
2021-10-08 10:45:05 351
原创 2021-10-07 C++归并排序
归并排序算法基本思想归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。图解:基本步骤找出中间点,将原数组一分为二,两个数组继续划分为四个数组,递归实现。当子数组只剩下一个元素时自然有序,结束递归。接下来开始合并。将排序好的两个子数组合并为一个数组。创建一个临时数组,分别用指
2021-10-07 10:45:30 126 1
原创 快速排序算法(C或者C++)
快速排序算法1. 算法介绍该算法的实现可分为以下几步:在数组中选一个基准数(通常为数组第一个);将数组中小于基准数的数据移到基准数左边,大于基准数的移到右边,即将数组一分为二,一般右边均大于基准数,左边均小于基准数;运用递归,对于基准数左、右两边的数组,不断重复以上两个过程,直到每个子集只有一个元素(递归出口),即为全部有序。2. 模板代码(代码来源于AcWing第785题)#include <iostream>using namespace std;con
2021-10-06 23:16:23 181 1
原创 2021-07-13
Java入门了解Java帝国的诞生1972,C语言诞生贴近硬件,运行快,效率高操作系统,数据库,编译器等指针和内存管理1982,C++诞生面向对象兼容C图像领域,游戏等1995年,Java诞生语法像C无指针与内存管理可移植性,到处都可以运行 (JVM虚拟机)面向对象类型安全,高质量类库Java初生图形界面程序(Applet)Java标准版(J2SE):桌面Java移动版(J2ME):手机Java企业版(J2EE):服务器Java发展高可用,高并发
2021-07-13 22:47:25 68
原创 2021-07-13
常见的DOS命令打开CMD的方式开始+系统+命令提示符win+R 输入cmd打开控制台在任意文件夹下按住Shift+鼠标右键,选择在当前文件夹下打开命令行窗口。资源管理器的地址栏前加上cmd,然后空格+路径。管理员身份运行:开始+系统+命令提示符-》更多–》以管理员身份运行常用的Dos命令#盘符切换 盘名:(英文冒号) 例:切换到D盘#查看当前目录所有文件#dir#切换目录 #cd 加路径 #加上参数/d可以跨盘#cd .. 返回上一级#清除屏幕#
2021-07-13 10:36:28 46
原创 2021-07-11
Markdown 学习Day01 2021_0710标题行首加 # ,然后加空格,空格后输入标题名#的数量代表标题等级三级标题四级标题五级标题六级标题最多为六级标题。字体设置hello,would!hello,would!hello,would!hello,would!引用B站搜索狂神说java【零基础学Java】“行首>然后编辑内容”分割线行首 “—” 或 “***” 回车图片方法一:感叹号+中括号+括号注:感叹号"!“中括号”[]“括
2021-07-11 09:53:00 105
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人