
数据结构与算法
文章平均质量分 69
牛客、hdoi、洛古、ACwing、LeetCode、UPC、hdu等各类平台 (练习/竞赛) 题解以及面向ACM-ICPC的一些题解和知识点,包含基础的数据结构与算法
米莱虾
19软工 Unity3D游研工程师 GameJam亚军
ACM-ICPC国际大学生程序设计竞赛亚洲区域铜牌
全国大学生算法设计与编程挑战赛团队赛金奖rank9
全国大学生算法设计与编程挑战赛个人赛一金一铜
2020&2021全国大学生IT技能大赛国二等奖
2021&2020中国高校计算机大赛总决赛铜牌
亚太经济地区大学生数学建模竞赛二等奖
全国大学生创新促进就业大赛国决三等奖
中国软件智能应用程序设计大赛三等奖
计蒜之道程序设计大赛决赛Rank前列
全国大学生英语竞赛国家三等奖
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
牛客字符串SAM专题-D-Typewriter(后缀自动机优化dp)
D-Typewriter_牛客竞赛字符串专题班SAM(后缀自动机简单应用)习题 (nowcoder.com)https://ac.nowcoder.com/acm/contest/37092/DOne day, Jerry found a strange typewriter. This typewriter has 2 input modes: pay ppp coins to append an arbitrary single letter to the back, or qqq coins to c原创 2022-07-07 15:27:07 · 575 阅读 · 0 评论 -
Codeforces Round #648 (Div. 2) 【A-F思路及题解】
A. Matrix Gametime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputAshish and Vivek play a game on a matrix consisting of n rows and m columns, where they take turns claiming cells. Unclaimed cells are r原创 2020-07-26 14:40:27 · 599 阅读 · 0 评论 -
Codeforces Round #660 (Div. 2)【A—D思路及题解】
A. Captain Flint and Crew Recruitmenttime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputDespite his bad reputation, Captain Flint is a friendly person (at least, friendly to animals). Now Captain Flint原创 2020-08-01 23:11:41 · 519 阅读 · 0 评论 -
Codeforces Round #639 (Div. 2) 【A—D思路及题解】
思维+找规律、连通块原创 2020-07-11 09:56:14 · 868 阅读 · 0 评论 -
Codeforces Round #643 (Div. 2)【A—D】
A#include <bits/stdc++.h>#define pb push_backtypedef long long ll;using namespace std;const int inf = 0x3f3f3f3f;const int mod = 1e9+7;const int N = 1e6+10;int main(){ int T; scanf("%d",&T); while(T--) { ll n,k;原创 2020-07-28 13:14:59 · 349 阅读 · 0 评论 -
【数据结构】逛公园(spfa+dp)
题面题意策策同学特别喜欢逛公园。公园可以看成一张 N 个点 M 条边构成的有向图,且没有自环和重边。其中 1 号点是公园的入口,N 号点是公园的出口,每条边有一个非负权值,代表策策经过这条边所要花的时间。策策每天都会去逛公园,他总是从 1 号点进去,从 N 号点出来。策策喜欢新鲜的事物,他不希望有两天逛公园的路线完全一样,同时策策还是一个特别热爱学习的好孩子,他不希望每天在逛公园这件事上花费太多的时间。如果 1 号点到 N 号点的最短路长为 d,那么策策只会喜欢长度不超过 d+K 的路线。策策原创 2022-05-25 19:35:49 · 476 阅读 · 0 评论 -
【数据结构】欧拉回路(优化最短路-图论)
题面样例数据【样例输入1】13 31 22 31 3【样例输出1】YES1 2 -3【样例输入2】25 62 32 53 41 24 25 1【样例输出】YES4 1 3 5 2 6思路欧拉回路的模板,但只能算一个环,图原本可能不连通。 另外会有很多自环,也要优化一下,否则会超时。 有向图的欧拉回路就是入度与出度之和一定是一个偶数(如果入度为1,出度为-1,和为0),无向图的点度一定是偶数,用这个来判断是否为欧拉回路。代码原创 2022-05-25 17:44:53 · 1192 阅读 · 0 评论 -
【数据结构】物流运输(最短路&DP)
题面题目描述物流公司要把一批货物从码头A运到码头B。由于货物量比较大,需要n天才能运完。货物运输过程中一般要转停好几个码头。物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪。由于各种因素的存在,有的时候某个码头会无法装卸货物。这时候就必须修改运输路线,让货物能够按时到达目的地。但是修改路线是一件十分麻烦的事情,会带来额外的成本。因此物流公司希望能够订一个n天的运输计划,使得总成本尽可能地小。输入描述第一行是四个整数n(1 ≤ n ≤ 100)、m(1 ≤ m原创 2022-05-25 17:53:21 · 838 阅读 · 0 评论 -
【数据结构】最小瓶颈路 加强版(Kruskal重构树&RMQ求LCA)
题目描述给定一个n 个点m条边的无向连通图,编号为1到n,没有自环,可能有重边,每一条边有一个正权值w。给出q个询问,每次给出两个不同的点u和v,求一条从 u到v的路径上边权的最大值最小是多少。输入格式输入第一行两个整数n, m。接下来m行,每行三个整数ai, bi, wi (ai != bi),表示一条边 (ai, bi),边权为 wi。接下来一行一个整数q,表示询问数量。接下来一行四个整数A,B,C,P,表示询问的生成方式。...原创 2022-05-18 20:25:39 · 556 阅读 · 0 评论 -
【数据结构】新农村信息化/网络通信设计(最小生成树&并查集)
题面【问题描述】在智慧新农村建设中首先要有网络通信,假设通信公司要在n个村庄搭建通信网络,请求出最小的通信网络光缆总长度。【输入形式】第一行给出村庄个数n和可搭建的通信光纤通路m;接下来的m行:每行给出一个三元组,数之间用空格隔开;前2列表示村庄可行的光纤连接,第3列表示需要的光缆长度。【输出形式】最小生成树的权值【样例输入输出】【样例说明】权值是正整数,可能很大,但不需要考虑整型溢出问题思路这属于一道改编题,原题是“通信网络设计”,输出形式已经说的很明白了,要求最.原创 2022-05-18 20:04:57 · 647 阅读 · 0 评论 -
【数据结构】小Y过生日之奇特蛋糕(DFS)
题面样例数据AC_Code#include <bits/stdc++.h>#include <vector>#include <stack>#define ll long long #define db double const int N=1010;const int M=10100;using namespace std;unsigned long long t,n,r,h;bool vis[N], jude;int f[N]原创 2022-05-18 19:34:40 · 335 阅读 · 0 评论 -
【C++】网络延时-树链(树形dp/dfs)
问题描述 给定一个公司的网络,由n台交换机和m台终端电脑组成,交换机与交换机、交换机与电脑之间使用网络连接。交换机按层级设置,编号为1的交换机为根交换机,层级为1。其他的交换机都连接到一台比自己上一层的交换机上,其层级为对应交换机的层级加1。所有的终端电脑都直接连接到交换机上。 当信息在电脑、交换机之间传递时,每一步只能通过自己传递到自己所连接的另一台电脑或交换机。请问,电脑与电脑之间传递消息、或者电脑与交换机之间传递消息、或者交换机与交换机之间传递消息最多需要多少步。输入输出格式输入原创 2022-05-11 16:55:47 · 421 阅读 · 0 评论 -
【C++】两个和尚抬水吃/搬水果(贪心)
题目描述在一个寺庙里老和尚要求弟子给厨房抬水,假定所有的水已经分好装在不同大小的桶里,现要求最终把所有的水装到一个大桶中:小和尚很懒,无论桶里有多少水,总要二人抬;但是,小和尚也很聪明,每一次总是可以找到合适的二桶水,把其中一只倒进另—只桶里,他们消耗的体力等于二个水桶的重量之和。你的任务是帮助二个小和尚设计出合装的次序方案,使得耗费的体力最少,并输出这个最小的体力耗费值。输入输出形式输入第—行是—个整数n (1 <= n <= 30000),表示装有水的水桶的个数。第二行包原创 2022-05-11 16:43:05 · 631 阅读 · 2 评论 -
【C++】社区医院建设(树形DP/二次扫描与换根法)
题目描述设有一棵二叉树,如图:其中,圈中的数字表示结点中居民的人口。圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为 1。如上图中,若医院建在1 处,则距离和 =4+12+2×20+2×40=136;若医院建在 3 处,则距离和 =4×2+13+20+40=81。输入格式第一行一个整数 n,表示树的结点数。接下来的 n行每行描述了一个结点的状况,包含三个整数 w u v,其中 w 为居民人口数,u为左链接...原创 2022-05-11 16:32:39 · 502 阅读 · 0 评论 -
【C++】春招大厂笔试算法题&AC代码合集
金三银四已然接近尾声,小虾也在四月初拿到了大厂的暑期实习研发岗offer。今天和大家分享一下这次暑期实习陪跑的笔经。投的不多,有的代码没能及时保存好(着实可惜),品相比较好的都放在下面啦~21年雷火游研岗的也顺手补上去了~目录04-01【2021网易雷火】游戏研发岗笔试T1-打扑克-纯模拟(10分)题目描述输入输出描述样例数据AC_codeT2-钱老板玩MMO-纯模拟(20分)题目描述输入输出描述样例数据AC_codeT3-接水原创 2022-04-29 19:58:05 · 6465 阅读 · 5 评论 -
【逆波兰式】字符串模拟计算器 (C++/C#/python_Code)
题目描述小明在你的帮助下,破密了Ferrari设的密码门,正要往前走,突然又出现了一个密码门,门上有一个算式,其中只有“(”,“)”,“0-9”,“+”,“-”,“*”,“/”,“^”求出的值就是密码。小明数学学得不好,还需你帮他的忙。(“/”用整数除法,取商)输入输入共1行,为一个算式。输出输出共1行,就是密码。样例输入1+(3+2)*(7^2+6*9)/(2)样例输出258提示100%的数据满足:算式长度<=30 其中所有数据在2的31次方-1的范围内.原创 2022-04-27 16:15:56 · 2655 阅读 · 0 评论 -
敏感词过滤算法设计——AC自动机详解
Ⅰ 引入我们常常遇到敏感词过滤功能,用来过滤掉用户输入的一些不合时宜的内容,这个功能是怎么实现的呢?其实,这些功能的最基本的原理就是字符串匹配算法,也就是通过维护一个敏感词的词典,当用户输入的一段文字后,通过字符串匹配算法,来查找用户输入的这段文字,是否包含敏感词,如果有,就用 * 把它替代掉。很多种字符串匹配算法有很多,它们都可以处理这个问题,但是对于访问量巨大的网站来说,比如淘宝,用户每天的评论数有几亿甚至几十亿。这个时候,我们对敏感词过滤系统的性能要求就要很高。如果一个用户输入内容之后要几原创 2022-03-31 10:42:17 · 1721 阅读 · 1 评论 -
【2022剑心互娱】程序岗笔试-AC代码及题目分享
剑心有4题,1道根据游戏情景设计数据结构,剩下3道编程题(1道核心代码,1道工程函数填写,1道ACM模式)笔试时间位1个小时,在给定时间内任意选择。代码题只写了T1和T3(没AC有点蓝瘦),T2骗个分不想管了,设计题看了下就交卷了T1-地图的独立空间(核心代码模式)题意现有二维数组 int height[m][n] 提供地表的高度信息,格子的值代表对应坐标的当前高度。当玩家处于其中一个格子时,可向前后左右四个方向移动。如果两个相邻格子的高度差大于等于2,则这两个格子间无法相互移动.原创 2022-03-27 01:04:37 · 4741 阅读 · 3 评论 -
【2022网易雷火】游戏研发笔试-AC代码及题目分享
3个小时,4道题目,雷火的题目不在于难,更在于对细节的把控和写大模拟的耐心,花了一个半小时,AC了3.85,直接交卷退了。第一题AC,第二题AC,第三题85%,第四题AC。下面分享一下大致的题意和对应的代码,就不多说了,最近很累(代码可能会有贴错的情况,如有望指正,感谢~)。T1-小Y抽奖题意n行m列个奖励格子,每次抽奖消耗一个道具。每个格子奖励的数量有限且各不相司。每个格子被抽到一次,剩余的奖励数量-1。剩余的奖励数量为0时,则不会再抽到该格子。小Y抽了好多次,但一直没有抽到最想要的..原创 2022-03-27 00:45:39 · 8887 阅读 · 7 评论 -
【西山居seed】开发岗笔试惊现Codeforces2100+题
这次西山居seed开发B卷出的可以的,3道编程题60分均摊 第一道hard+,第二道心理hard,第三道线段树-高阶数据结构hard 剩余40分是选择填空之类(据说因为细节化,难于408) 由于西山居无法使用本地编译器,我又打开我的Devc重新把3份代码打了一遍(雾) 下面来分享一下这次的题目吧(幸好及时用笔抄了题,才能有机会写个题解) 喜欢西山居旗下的《双生视界》,封面是最近刚抽到的橙卡hhT1-异或得分路径条数(折半搜索)题意一个 n*m 的矩形,每个格子上标有数字。小明从左上角出发原创 2022-03-23 09:00:00 · 5323 阅读 · 5 评论 -
等字符种类分割字符串(暴力到优化思路逐步详解)
题面时间限制: C/C++ 1000 ms | 其他语言 2000 ms内存限制: C/C++ 64 MB | 其他语言 128 MB描述:给定一个只包含小写字母的字符串,长度不超过1e5将字符串分割成左右两半,要求左右两半的字符种类完全相等(个数可以不同)。有多少种不同的分割方式?输入:多组测试数据,以EOF结束 每组测试数据一行字符串,仅包含小写字母,长度不超过1e5 多组测试数据的字符串长度总和不超过1e5输出:每组测试数据输出一行,一行一个整数,表...原创 2022-03-20 14:34:01 · 1229 阅读 · 0 评论 -
子矩阵的和(二维前缀和)题解【附图、举例、详细】
796. 子矩阵的和(二维前缀和)题目:输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数x1, y1, x2, y2,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式第一行包含三个整数n,m,q。接下来n行,每行包含m个整数,表示整数矩阵。接下来q行,每行包含四个整数x1, y1, x2, y2,表示一组询问。输出格式共q行,每行输出...原创 2020-05-05 22:23:40 · 5545 阅读 · 4 评论 -
蓝桥历届真题——合根植物 (并查集模板)
试题 历届试题 合根植物(并查集模板)时间限制:2.0s 内存限制:256.0MB问题描述 w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。 这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗? 输入格式 第一行,两个整数m,n,用空格分开,表示格子的行数、列数(1<m,n<1000)。原创 2020-09-21 21:23:32 · 260 阅读 · 0 评论 -
蓝桥历届真题——连号区间数
试题 历届试题 连号区间数时间限制:1.0s 内存限制:256.0MB问题描述小明这些天一直在思考这样一个奇怪而有趣的问题:在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是:如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)递增排序后能得到一个长度为R-L+1的“连续”数列,则称这个区间连号区间。当N很小的时候,小明可以很快地算出答案,但是当N变大的时候,问题就不是那么简单了,现在小明需要你的帮助。输入格式第一行是一个正整数N (1 <= N &原创 2020-09-22 21:14:53 · 212 阅读 · 5 评论 -
蓝桥杯填空题技巧【教你十秒快速做出填空题】
填空题1.在计算机存储中,12.5MB是多少字节 (结果为1个整数)?答:(ll)(12.5x1024x1024)2.由n对括号组成的合法括号序列一共有多少种?// B. 合法括号序列#include <bits/stdc++.h>using namespace std;int ans,n; void dfs(int l,int r){ if(l==n) //当我们已经添加了四个左括号说明已有八个括号匹配完毕 { ans++; return; } dfs(l+原创 2020-12-13 22:10:37 · 5387 阅读 · 1 评论 -
蓝桥历届试题——分糖果
分糖果时间限制:1.0s 内存限制:256.0MB问题描述 有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子。 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。 反复进行这个游戏,直到所有小朋友的糖果数都相同为止。 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。 输入格式 程序首先读入一个整数N(2<N<100),表示小朋友的人数。 接着是一行原创 2020-09-23 23:46:50 · 263 阅读 · 0 评论 -
【C++】国王买瓷器(模拟)
题面有一定的数学思维,按照题意抽象模拟就好,怕读入过大数据的话,可以用快读代码#include <iostream>#include <cstdio>#include <cmath>using namespace std;long long number,t1,t2;int main(){ cin >> number; long long answer = number; while(answer > 0)原创 2021-12-15 16:51:30 · 1300 阅读 · 0 评论 -
蓝桥历届真题——分考场
试题 历届试题 分考场(DFS)时间限制:1.0s 内存限制:256.0MB问题描述 n个人参加某项特殊考试。 为了公平,要求任何两个认识的人不能分在同一个考场。 求是少需要分几个考场才能满足条件。输入格式 第一行,一个整数n(1<n<100),表示参加考试的人数。 第二行,一个整数m,表示接下来有m行数据 以下m行每行的格式为:两个整数a,b,用空格分开 (1<=a,b<=n) 表示第a个人与第b个人认识。输出格式 一行一个整数,表示最少分几原创 2020-09-21 21:26:36 · 600 阅读 · 1 评论 -
蓝桥历届试题——k倍区间【朴素做法+2种AC解法】
k倍区间时间限制:2.0s 内存限制:256.0MB问题描述 给定一个长度为N的数列,A1, A2, … AN,如果其中一段连续的子序列Ai, Ai+1, … Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。 你能求出数列中总共有多少个K倍区间吗? 输入格式 第一行包含两个整数N和K。(1 <= N, K <= 100000) 以下N行每行包含一个整数Ai。(1 <= Ai <= 100000)输出格式 输出一个整原创 2020-09-22 23:47:52 · 237 阅读 · 0 评论 -
蓝桥历届真题——小数第n位 (循环小数的循环节)
试题 历届试题 小数第n位 循环小数的循环节时间限制:1.0s 内存限制:256.0MB问题描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。 如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式。 本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始的3位数。 输入格式 一行三个整数:a b n,用空格分开。a是被除数,b是除数,n是所求的小数后位置(0<a,b,n<1e9)输出格式 一行3位数字,表示:a除以b,小数后第原创 2020-09-21 21:16:56 · 660 阅读 · 0 评论 -
面试算法压轴题(K-D Tree的应用)详细解析
目录给出一个应用场景:思路过程及知识点引入:何为 K-D TreeK-D Tree 有怎样的特征优势,能解决怎样的问题重难点:如何利用 K-D Tree 解决上面的问题K-D Tree 这种数据结构为什么叫做 K-D Tree如何建树建树之后如何查询K-D Tree 的一个 code模板:给出一个应用场景:在一个二维平面中,有一些补给点存在,所有补给点的位置不会改变,玩家可操作角色在平面内随意移动,求在任何时刻距角色最近的补给点。其实这个问题就是:给定..原创 2021-09-05 10:23:54 · 816 阅读 · 0 评论 -
“动态规划” 面试高频题——剑指offer精选万字总结
❥分享初学DP时的两篇文章,希望对大家有所帮助❥算法设计与分析之 “动态规划” 经典习题总结&AC代码_夏旭的博客-CSDN博客动态规划之4大背包问题详解_夏旭的博客-CSDN博客首先我们大致了解一下动态规划 (dynamic programming) 的定义和核心套路:动态规划 (DP) 是一种算法技术,它将大问题分解为更简单的子问题,对整体问题的最优解决方案取决于子问题的最优解决方案。 某些问题往往有 2个特征:重叠子问题、最优子结构。而用动规可以高效率地处理具有这...原创 2022-03-06 16:27:19 · 3407 阅读 · 0 评论 -
2022美团校招技术岗笔试全部AC_Code分享
【自动车算法岗】差了5秒钟,终究还是没能AK呀。第三题一开始只对了18%的数据,在还有20分钟的时候,发现题目看错了,码到 cout<<ans<<endl; 的时候发现还剩5秒了,赶紧从ide复制到代码框内,光标刚刚放到保存代码上,发现按不动了,好家伙,时间截止了!!!笔试题分为两大部分:4道算法题+3道人工智能相关知识的多选题。限时两个小时,每个子部分提交后可以再返回修改,这点还是很人性化的,不像有的笔试,子部分提交后就无法返回修改了,就不是那么的友好了。题目大概.原创 2022-03-05 17:59:31 · 17415 阅读 · 0 评论 -
面试算法高频压轴题——灯泡开关问题
题意一个圆环上有100个灯泡,灯泡有亮和暗两种状态。灯泡的状态随机,按一个灯泡的开关,相邻两个灯泡的状态会发生一次改变。比如暗~亮~暗,按中间的灯泡,变化为亮~暗~亮。请设计一道算法,使得所有灯泡最后全部变为亮色。思路分析第一步:把所有灯泡变为全亮或者只剩一个是暗的给所有灯泡编号为1~100,对于1~98号的灯泡,遇到暗的,就按下它的相邻灯泡的开关,保证它是亮的(也就是在牺牲紧接着的后一个灯泡的亮度的可能下,保证当前灯泡是亮的),这样一直遍历下去,就能保证1~98号灯泡是亮的。我们已经保证1原创 2022-03-02 10:32:36 · 2361 阅读 · 0 评论 -
高频笔试面试刷题总结之链表(分布讲解&代码注释)
合并两个有序链表【简单】题面思路最直接的思路就是——递归: 只要有一个链表为空,就直接返回另一个链表,不需要进行合并; 否则看两个链表哪个头部节点较小,较小的头部节点指向剩余节点的merge结果。 通过递归的方式将两个链表的所有节点进行合并。复杂度分析时间复杂度:O(n+m),每次调用递归都会去掉l1或者l2的头节点(直到至少有一个链表为空),函数 mergeTwoLists至多只会递归调用每个节点一次。 空间复杂度:O(n+m),递归调用 mergeTwoLis...原创 2022-02-28 23:57:49 · 1775 阅读 · 0 评论 -
O(N)复杂度手撕排序面试题 | 一篇文章带你搞懂计数排序
计数排序与基数排序均为桶排序的特殊方法这两天的夜还真是冷啊...那么,计数排序是什么样的排序呢?计数排序不是比较排序算法,该算法于1954年由 Harold H. Seward提出,通过计数将时间复杂度降到了O(N)。计数排序算法的步骤又是怎样的呢?第一步:找出原数组中元素值最大的,记为max。 第二步:创建一个新数组count,其长度是max加1,其元素默认值都为0。 第三步:遍历原数组中的元素,以原数组中的元素作为count数组的索引,以原数组中的元素出现次数作为count数.原创 2022-02-19 23:46:42 · 884 阅读 · 0 评论 -
算法多解——位运算经典例题详解合集篇
JZ15 二进制中1的个数题面思路1n与n-1与运算,比如136=10001000,135=10000111两数相与之后就减少了一个1,把遇到的1计数class Solution {public: int NumberOf1(int n) { int cnt=0; while(n) { n = n&(n-1); cnt++; }原创 2022-02-19 22:49:27 · 2658 阅读 · 0 评论 -
算法多解——JZ61 扑克牌顺子(哈希优化&事例彩图解析)
题面在做这道题之前,我们首先要考虑如何才能实现一个五张牌的顺子;也就是这个顺子它要实现,需要什么样的特点。首先,肯定不能存在一样的非0牌,一出现,立刻判断它不是顺子;其次,如果存在4张0,不管非0牌,一定能组成顺子;最后,0能化为任意牌,因此(除了4张0的情况)能否组成顺子的关键在于非0牌中,最大与最小数的差必须<=4;【那么,红色字体标注的结论为什么成立呢?那是因为最大最小值把其他非0数所在的区间固定住了。比如:若差为4,其他数在两个最值中间,随便是多少,只要不重复,就一原创 2022-02-16 22:54:32 · 665 阅读 · 0 评论 -
算法多解——JZ41 数据流中的中位数(构造大小顶堆)
题面解法1思路分享其实可以说是一道模拟题吧 最常规的思路如下: 结合题意,Insert()方法读取数据就是:逐个把数据流里面的数压入vector容器去处理; GetMedian()方法获取当前读取数据...就是:把当前容器中的数按照要求处理返回中位数 这个要求就是排好序后照常返回中位数复杂度分析时间复杂度:寻找中位数操作中,快排复杂度O(nlogn),公式计算中位数复杂度为O(1), 故总体复杂度为O(nlogn) 空间复杂度:录入数据过程中,每个数据只操作一次,复杂度为原创 2022-02-16 21:05:50 · 449 阅读 · 0 评论 -
算法多解——JZ51 数组中的逆序对(归并排序进阶树状数组)
题面[中等]通过率:16.79%时间限制:3秒空间限制:64M解法1(朴素做法)思路看到这条题目,最简单的想法就是暴力: 二重循环扫描数组,如果出现前面比后面大的,就计数+1 但是看到50%的数据,size<=1e4,二重循环1e8还可以,再大一点显然不行了 因此纯暴力拿不到全分(看测试点怎么给了)复杂度时间复杂度:O(nlogn)到O(n^2),每次循环后内循环的长度都减一 空间复杂度:O(1)代码原创 2022-02-15 00:56:41 · 544 阅读 · 0 评论