自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 每日一题 2023.11.8

【代码】每日一题 2023.11.8。

2023-11-08 17:27:19 70

原创 每日一题 2023.11.7

self->确保指向实例对象本身的引用,将传入的参数传递给类中的方法。否则,会在全局寻找该函数。w[-1]代表 在w中的最后一个元素。

2023-11-07 12:03:46 51

原创 每日一题 2023.11.6

对位运算非常不熟悉,还需要针对位运算进行练习。

2023-11-06 22:07:40 49

原创 每日一题 2023.10.31

C++代码:需要注意的是从下往上走,DFS算法。

2023-10-31 21:10:53 34

原创 每日一题 2023.10.30

【代码】每日一题 2023.10.30。

2023-10-30 18:54:42 51

原创 每日一题 2023.10.29

先进行排序(可不使用优先队列的(因为只需排序一次)) 然后按题意要求 即可获得答案。counter:表达 引用次数为a的文章有多少篇。题解法:时间复杂度O(N)

2023-10-29 00:49:08 23

原创 每日一题 2023.10.28

直接用优先队列 按题意操作即可。

2023-10-28 00:10:01 37

原创 每日一题 2023.10.27

只看一边 找到排序后 相邻两边的最大间隔。把两边的最大间隔相乘即可得到结果。注意:要按题目要求取模运算。

2023-10-27 23:15:05 46

原创 每日一题 2023.10.26

按题目要求写就可了。

2023-10-26 22:09:44 26

原创 每日一题 2023.10.23

简单地遍历一遍就可了。

2023-10-23 21:30:42 45

原创 每日一题 2023.10.22

然后 不断加如果sum>0 说明收益为正,加入结果中(之前加过的值都会再加一次--->乘法的作用)然后再取收益次大的S1 满足S1+2S0>S0 则加进去。由于我们尽可能要把大的值加进去,所以先排序(从大到小)同理 不断相加 满足条件则加 不满足跳过。获得最大收益,是最值问题,考虑动规。首先,我们取一个收益最大的S0。状态:有没有选这道菜。

2023-10-22 10:37:59 32

原创 每日一题 2023.10.21

找到父节点为自己的,“所有子节点的数量*(n-子节点数量)”即为该联通图 与其他节点无法到达的点对数。构建邻接表,遍历即可,要注意的是单个节点没有添加进邻接表,需要特判size=1.遍历所有联通图加起来,除2(去重)即为所求。

2023-10-21 18:17:22 29

原创 每日一题 2023.10.20

按题意书写即可,需要关注的就是设置数的大小。

2023-10-20 22:17:00 34

原创 每日一题 2023.10.17

O(1)复杂度 :容斥原理(集合画圈)+公式。最简单的方法:枚举 时间复杂度o(N)

2023-10-17 12:36:33 52

原创 每日一题 2023.10.16

观察可知 异或结果的第一个1是关键 原因是这两个数的这一位必然是不同的 这时候就根据这一位区分出两个数——>0区/1区 其他数还是没关系 因为这一位上 相同的数相互抵消为0。对所有数据进行异或,这时候重点在于找那两个只出现一次的数(其他的 因交换律 都被抵消为0)和上一次的签到题 极其相似 不过这次 只异或一次显然得不到答案(因为有两个不一样的数)那么怎么处理 就是问题的关键。关于如何获得 这一位见下代码。分别对两个区域 异或得到答案。

2023-10-16 20:21:56 27

原创 每日一题 2023.10.14

大概思路:异或操作 掌握异或的基本性质就可以做出了 满足交换律 遇到相同的值归为0 故异样(即出现一次的值)现真身。想法:用一个数组来存数字 每出现一次 值++ 最后输出值为1的即可 但是空间复杂度到O(N)要求O(N)的时间复杂度 O(1)的空间复杂度。

2023-10-14 18:51:54 35 1

原创 每日一题 2023.10.13

第一次尝试失败:尝试用数组 直接存rains里的值,通过后面再次遇到这个值大于1,则用前面的0来消除之前的一次洪水,但是只能通过案例,发现rains里的值最大可达1e9!大概思路:二分—>利用set的特性 可以方便二分查找 反复出现的rains[i] 第一次出现时 第一个零出现位置 然后把该位置的ans设为rains[i]插入st中 保证后面需要的时候可以用 注意插入时 st{[0]=i(第一个0下标),[1]=(第二个0下标)}情况一:rains[i]==0。情况二:rains[i]!

2023-10-13 19:42:36 35

原创 每日一题 2023.10.12

大概思路:双指针 两端出发 即可。

2023-10-12 14:23:13 41

原创 每日一题 2023.10.11

题目思路:简单的字符串处理问题+unordered_map(处理映射关系 从string->int)+priority_queue(方便排序)对字符串的处理:读取一长段句子的每一个word。

2023-10-11 23:10:31 39

原创 哈希表

2.拉链法:构建一个一维数组(大小正常 符合题目 且为质数) 将其映射在这个数组中 形象比喻:数组有很多个槽位 庞大的映射到对应槽位 形成一条类似拉链的(拉链即单链表)1.开放寻址法:构建一个一维数组(大小为题目的2~3倍 且为质数)将其映射在这个数组中 形象比喻:数组中有很多坑位 一个坑被占了 就会看下一个坑 直到找到空坑为止。作用:把一个庞大的 复杂的 映射到 一个较小的(0~n)//类似:离散化《特殊的哈希方式》(保序)(离散化后的数 相对位置保持不变)存储结构:(处理冲突)

2023-01-14 22:28:03 59

原创 堆排序(模板)

up 往上调整。存储:一维数组:根节点 :1;1.完全二叉树(除了最后一层节点 上面都是满的)2.每个结点都小于等于左右儿子:(根节点为最小值)基本操作:down 往下调整。//以上可以通过STL直接实现。4.删除任意一个元素。5.修改任意一个元素。模拟堆时:需要双映射。

2023-01-12 22:52:04 122

原创 并查集

实现思想:每个集合都用树来表示,然后有父节点作为标志。时间复杂度:利用路径压缩实现 近乎o(1);2.查找两个元素是否在同一集合。

2023-01-05 22:44:05 48

原创 Trie树

应用:存储 和 查找 字符串 数字 集合的数据结构。查找:可以知道字符串/数字出现次数;他是一种树状的结构,由根延申出结点。存储:插入一个字符串/数字;

2023-01-05 22:09:20 37

原创 数组模拟单 双链表

单链表 注意事项 :若在第k个数后添加应为 add(k-1,x) remove(k-1)//因为idx从0开始。双链表 注意事项: 若在第k个数后添加应为 add(k+1,x) remove(k+1) 因为idx=2。好处:比用结构体建立链表 速度更快;

2023-01-01 23:06:07 50

原创 离散化处理

思路:将离散化的数值 由小到大 去重的 按下标1~n存放在数组中;然后需要调用的时候 直接使用对应数组下标取出 即可。当处理一些值域较大,但个数相对较小的数据时,可以进行离散化处理。(下面的操作单指保序的离散操作)找到对应值 进行处理:(二分)

2023-01-01 21:57:14 176

原创 高精度加减乘除

强调下面所有操作都基于把大数 按 低位到高位 由0~n 存在数组中进行。思路: 数组存储 一位一位加 需要注意的是 进1操作。高精度乘法:大数*一个较小数。注意:这里是从高位开始操作。且输出的时候 要逆序输出。高精度加法:大数+大数。高精度减法:大数减大数。高精度除法:大数/小数。

2022-12-31 12:38:08 43

原创 二分法(整数二分 浮点数二分)

从左和右 ,向目标值一次一次逼近的过程。应用:在一个具有某种单调性质的数组中,进行快速查找。浮点数二分:(没有边界问题 )(常使用在求根)

2022-12-31 11:56:57 89

原创 归并排序(模板)

先通过 递归 获得两个数组。(其实 这是一个多次的过程 是很多小块的合并 所以名叫归并吧)利用双指针 遍历两个数组 进行比较,依次存放在临时数组中,最后返回。简单 概述一下 先切成若干块 再归并起来。

2022-12-31 11:39:44 38

原创 快速排序(模板)

在数组中确定一个值,把该值作为分界线,小于该值的放左边,大于该值的放右边。然后递归 重复上述操作。

2022-12-31 11:15:32 28

原创 筛法求素数(函数实现)

实现方法:我们利用乘法可以筛选出不是素数的数(可以由1及本身的数之外的数相乘 说明可分解 这个数就不是素数),并且划该数为0,接下来只要输出所有数字中不是0的数,就可以得到所有素数。

2022-11-14 15:25:20 108

原创 汉诺塔的递归实现

1.我们想将n个圆盘放在c上 是不是需要将最大的圆盘(第N个圆盘)放在C的第一个,而通过之前的规则,我们知道这时候C上必不能有圆盘(否则无法放置),而A上同样因为要取出第N个圆盘,所以不能有其他圆盘在其上。3.所以,完成2需要把A的N-1个圆盘放在B上。2.显然,我们可以借助B,将A的N-1个圆盘先放在B上。5.需要将N-2个圆盘放在C上,把第N-1个放在B上。6.需要将N-3个圆盘放在B上,把第N-2个放在C上。8..需要将N-2个圆盘放A上,把第N-1个放在C上。这样就解决了该问题。

2022-11-12 17:26:22 163

原创 哨兵循环解决计数字符个数问题

以一个哨兵来监视数值,遇到哨兵值结束程序。需要注意的是:要提醒用户哨兵值是什么,不然可能无法结束。

2022-11-12 16:15:45 86

原创 数组(顺序表)中插入/删除一个数

同数组增加数一样 不过有一些小小的变化 数组的增加数是将数组的最后一个数往后移动 直到需要增加的这个数。而这里 数组的减小 在于将i的后一个数向前一个覆盖 还有&e可以确保将删除的值传回来 有一个可视性。插入的大体思路:将数组从最后一个数到需要插入的位置 一直往后移一个位置 再将这个数插入即可。若输入i不符合条件 反馈false 符合条件 反馈true。同时,为了增加使用的健壮性,我们可以使用一个bool型的函数。练习:参考数组增加一个数,尝试编码 删除数组中的一个数。

2022-11-07 11:02:24 399 1

原创 求小于输入值的最大素数的代码

他第一次循环进入的i为49 对于k来说 大到7的时候发现49%7==0 c就要+1了 c不为0 不输出这个数 进行下一次循环 i为48了 同上k为2的时候 48%2==0 进行下一次循环。这是我们上面都承认了的 然后下一次循环开始时c不是从0开始的 也就是c只能增大 而永不为0 这样永远不能满足。这时 我们就需要想想了 对于第一步的循环 我们是不是让他逐渐减小 减小的最大的质数就可以停止了呢。紧接着 i为47 这时候我们发现k的循环里面没有满足可以使c++的 所以c==0。

2022-10-25 00:11:12 1034 1

原创 八皇后多函数解决

在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。把每个摆法输出,皇后可以用“1”代替。通过题目 我们可以了解到问题的关键在于“安放八皇后”“检查工作””输出摆法“,而其中最重要的是检查和安放工作,最简单的是输出摆法。接下来,我们通过函数来将这个问题分解。这样就简单地打出92种八皇后啦!首先,我们先看看八皇后这个题目。最后只需把主函数加上就行了。

2022-10-18 19:36:39 153

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除