自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STL初步讲解

文章目录sortmapvectorstackqueuepriority_queue初学C++,发现经常在文件中有using namespace std这个东西。首先 namespace 这个东西叫做命名空间。using有好几种用法,这里使用的是using的命名空间的使用。std是C++中的一个命名空间,叫做标准命名空间。C++标准库中的函数或者对象都是在命名空间std中定义的,所以我们要使用标准函数库中的函数或对象都要使用std来限定。通俗的讲就是说 我们平常用的标准库中的cout,cin其实都是

2020-12-20 14:10:14 212

原创 HAPPY_TOGETHER_WEEK15_ENJOY

文章目录7-1 6翻了7-2 幸运彩票7-3 点赞7-4 猜数字7-5 出租7-6 A-B7-7 连续因子7-8 天梯赛座位分配7-9 大笨钟7-10 敲笨钟7-11 整除光棍7-1 6翻了#include<iostream>#include<string>using namespace std;int main() { string str; int s; int count = 0; getline(cin, str); for (int i = 0; i &

2020-12-20 11:51:47 121 1

原创 二分图匹配(二)

1

2020-12-15 23:43:22 250

原创 CF741C Arpa’s overnight party and Mehrdad’s si

题目描述:有n对情侣(2n个人)围成一圈坐在桌子边上,每个人占据一个位子,要求情侣不能吃同一种食物,并且桌子上相邻的三个人的食物必须有两个人是不同的,只有两种食物(1或者是2),问一种可行分配方式。题解:如果我们能把不能吃同一种食物的人连边,问题就变成二分图黑白染色• 所以情侣关系等价于两者之间连一条边• “每连续的三个人不能都一样”怎么办?• 让第2i个人和第2i+1个人不能吃一样的食物即可(即1连2,3连4,5连6以此类推)• 这样肯定是个二分图——2i和2i-1分别连了他两的情侣,情侣

2020-12-15 22:21:04 149

原创 Jozky模板

文章目录字符串处理数论欧几里得与扩展欧几里得欧几里得算法:扩展欧几里得算法:逆元扩展欧几里得费马小定理+欧拉定理递推求逆元__int128高精度运算唯一分解定理数据结构单调栈图论二分图匹配--匈牙利算法最短路径问题搜索动态规划计算几何其他算法Java大数A == B大整数加法大数阶乘大斐波那契数A/B莫队算法常规莫队带修改莫队字符串处理数论欧几里得与扩展欧几里得欧几里得算法:ll gcd(ll a,ll b){ return b==0?a:gcd(b,a%b);}扩展欧几里得算法:#

2020-12-06 10:22:43 776

原创 rqmBMFlmTm

rqmBMFlmTm

2020-12-02 19:08:48 111

原创 牛客题霸 [矩阵元素查找] C++题解/答案

牛客题霸 [矩阵元素查找] C++题解/答案题目描述已知int一个有序矩阵mat,同时给定矩阵的大小n和m以及需要查找的元素x,且矩阵的行和列都是从小到大有序的。设计查找算法返回所查找元素的二元数组,代表该元素的行号和列号(均从零开始)。保证元素互异。题解:因为行和列都是有序的,所以两个变量一个表示行一个表示列通过比较,先找到对应的列,再找到对应的行代码:class Finder {public: vector<int> findElement(vector<vec

2020-12-02 18:38:52 590

原创 牛客题霸 [子数组最大乘积] C++题解/答案

牛客题霸 [子数组最大乘积] C++题解/答案题目描述给定一个double类型的数组arr,其中的元素可正可负可0,返回子数组累乘的最大乘积。题解:同时记录最大值和最小值,为什么?因为给的元素是存在负数的,当出现负数时,最大值会变成最小值,而最小值也会翻身成最大值,所以要同时记录,每次最最大情况代码:class Solution {public: double maxProduct(vector<double> arr) { double ansmin =

2020-12-02 18:33:28 270

原创 牛客题霸 [最大数] C++题解/答案

牛客题霸 [最大数] C++题解/答案题目描述给定一个数组由一些非负整数组成,现需要将他们进行排列并拼接,使得最后的结果最大,返回值需要是string类型 否则可能会溢出题解:将字符串存入vector中然后sort排序,最后将所以字符串连在一起但是注意,最前面的字符串不能以0开始,所以先将开头的0筛过代码:class Solution {public: /** * 最大数 * @param nums int整型vector * @return stri

2020-12-02 18:29:55 1430

原创 牛客题霸 [拼接所有的字符串产生字典序最小的字符串] C++题解/答案

牛客题霸 [滑动窗口的最大值] C++题解/答案题目描述给定一个字符串的数组strs,请找到一种拼接顺序,使得所有的字符串拼接起来组成的字符串是所有可能性中字典序最小的,并返回这个字符串。题解:用sort对所有strs进行排序,然后从头到尾拼接起来即可代码:class Solution {public: /** * * @param strs string字符串vector the strings * @return string字符串 */

2020-12-02 18:25:03 435

原创 牛客题霸 [栈和排序] C++题解/答案

牛客题霸 [栈和排序] C++题解/答案题目描述给你一个1->n的排列和一个栈,入栈顺序给定你要在不打乱入栈顺序的情况下,对数组进行从大到小排序当无法完全排序时,请输出字典序最大的出栈序列题解:栈的性质是先进后出当栈中元素大于还没进栈的最大元素时,就存入vector,并弹出栈maxnum用来记录元素是否入过栈代码:class Solution {public: /** * 栈排序 * @param a int整型一维数组 描述入栈顺序 * @

2020-12-02 18:20:43 1319

原创 牛客题霸 [在转动过的有序数组中寻找目标值] C++题解/答案

牛客题霸 [在转动过的有序数组中寻找目标值] C++题解/答案题目描述给出一个转动过的有序数组,你事先不知道该数组转动了多少(例如,0 1 2 4 5 6 7可能变为4 5 6 7 0 1 2).在数组中搜索给出的目标值,如果能在数组中找到,返回它的索引,否则返回-1。假设数组中不存在重复项。题解:如果全是有序的很好做,就是二分模板但是现在存在翻转,也就是存在有序部分,也存在无序部分我们只需要在二分模板中进行判断,如果左侧有序,判断目标值是在有序部分还是无序部分,右侧也是这样详细看代码

2020-12-02 18:10:44 244

原创 牛客题霸 [滑动窗口的最大值] C++题解/答案

牛客题霸 [滑动窗口的最大值] C++题解/答案题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,

2020-12-02 17:59:37 279

原创 牛客题霸 [将字符串转化为整数] C++题解/答案

牛客题霸 [将字符串转化为整数] C++题解/答案题目描述实现函数 atoi 。函数的功能为将字符串转化为整数提示:仔细思考所有可能的输入情况。这个问题没有给出输入的限制,你需要自己考虑所有可能的情况。题解:题目很简单,但是坑特别多首先读入的数据并非正常,除了负号开头,也有正号开头,还有空格开头,这些都要特殊判断,其次最后的答案如果超过int的最大值就是输出int最大值,如果小于int最小值就要输出int最小值代码:class Solution {public: int ato

2020-12-02 17:54:18 237

原创 牛客题霸 [数组中未出现的最小正整数] C++题解/答案

牛客题霸 [数组中未出现的最小正整数] C++题解/答案题目描述给定一个无序数组arr,找到数组中未出现的最小正整数例如arr = [-1, 2, 3, 4]。返回1arr = [1, 2, 3, 4]。返回5[要求]时间复杂度为O(n)O(n),空间复杂度为O(1)O(1)题解:如果一个数是正整数,那我们就把他换到他所属的位置上比如读到2,我们就把2换到第2个位置上这样所有位置上都是他对应的数,哪个位置存在空缺就说明未出现哪个正整数代码:class Solution {publi

2020-12-02 17:45:19 772

原创 牛客题霸 [字符串的排列] C++题解/答案

牛客题霸 [字符串的排列] C++题解/答案题解:stl真好用,emmm。。。代码:class Solution {public: vector<string> Permutation(string str) { if (str.empty()) return {}; sort(str.begin(), str.end()); vector<string>ans; if(str.size()==1)

2020-12-01 23:38:12 192

原创 牛客题霸 [最长重复子串] C++题解/答案

牛客题霸 [最长重复子串] C++题解/答案题目描述一个重复字符串是由两个相同的字符串首尾拼接而成,例如abcabc便是长度为6的一个重复字符串,而abcba则不存在重复字符串。给定一个字符串,请编写一个函数,返回其最长的重复字符子串。若不存在任何重复字符子串,则返回0。题解:调用函数时记得传地址不然只能通过百分之六十每次选定起点和长度,判断是否存在重复字符串代码:class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改

2020-12-01 23:27:02 1049

原创 牛客题霸 [ 集合的所有子集] C++题解/答案

牛客题霸 [ 环形链表的约瑟夫问题] C++题解/答案题目描述现在有一个没有重复元素的整数集合S,求S的所有子集注意:你给出的子集中的元素必须按升序排列给出的解集中不能出现重复的元素题解:先sort一下,然后通过回溯实现选与不选代码:class Solution {public: vector<vector<int> > subsets(vector<int> &S) { vector<vector<in

2020-12-01 23:14:48 274

原创 牛客题霸 [ 环形链表的约瑟夫问题] C++题解/答案

牛客题霸 [ 环形链表的约瑟夫问题] C++题解/答案题目描述据说著名犹太历史学家 Josephus 有过以下故事:在罗马人占领乔塔帕特后,39 个犹太人与 Josephus 及他的朋友躲到一个洞中,39 个犹太人决定宁愿死也不要被敌人抓到,于是决定了一种自杀方式,41 个人排成一个圆圈,由第 1 个人开始报数,报数到 3 的人就自杀,然后再由下一个人重新报 1,报数到 3 的人再自杀,这样依次下去,直到剩下最后一个人时,那个人可以自由选择自己的命运。这就是著名的约瑟夫问题。现在请用单向环形链表得出最终

2020-12-01 22:51:52 322

原创 牛客题霸 [ 验证IP地址] C++题解/答案

牛客题霸 [ 验证IP地址] C++题解/答案题目描述编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(".")分割。比如,172.16.254.1;同时,IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的。IPv6 地址由8组16进制的数字来表示,每组表示 16 比特。这些组数字通过 (":")分割。比如, 2001:0db8:85a3:00

2020-12-01 22:47:15 268

原创 牛客题霸 [没有重复项数字的所有排列] C++题解/答案

牛客题霸 [容器盛水问题] C++题解/答案题目描述给出一组数字,返回该组数字的所有排列例如:[1,2,3]的所有排列如下[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2], [3,2,1].(以数字在数组中的位置靠前为优先级,按字典序排列输出。)题解:第一反应就是stl的next_permulatation()可以实现全排列如果不用stl可以用dfs实现代码:class Solution {public: vector<vector&lt

2020-12-01 22:29:43 345

原创 牛客题霸 [容器盛水问题] C++题解/答案

牛客题霸 [容器盛水问题] C++题解/答案题目描述给定一个整形数组arr,已知其中所有的值都是非负的,将这个数组看作一个容器,请返回容器能装多少水。具体请参考样例解释题解:我们找出容器的左右边界,选择边界更低的,可以采用双指针,分别从两端向中间扫描,如果里面的高度高于边界就不能盛水,更新边界为当前高度,如果小于边界就可以盛水,记录答案代码:class Solution {public: /** * max water * @param arr int整型vect

2020-12-01 22:22:47 710

原创 牛客题霸 [表达式求值] C++题解/答案

牛客题霸 [表达式求值] C++题解/答案题目描述请写一个整数计算器,支持加减乘三种运算和括号。题解:没有除法emmm我们从头开始依次判断每个字符如果是左括号,我们就找右括号,并截取括号内的数字记录上一次的符号,然后将处理后的数字的数字压入栈中使得栈内的所有元素都是相加的关系最后将栈内元素全部相加详细可以看看代码代码:class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 *

2020-12-01 22:12:53 505

原创 牛客题霸 [二叉树的之字形层序遍历] C++题解/答案

牛客题霸 [二叉树的之字形层序遍历] C++题解/答案题目描述给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)例如:给定的二叉树是{3,9,20,#,#,15,7},该二叉树之字形层序遍历的结果是[[3],[20,9],[15,7]]题解:因为是之字形,所以如果是偶数行就从左向右遍历,如果是奇数行就从右向左遍历,我们可以用一个bool变量flag来标记当前是偶还是奇代码:/** * struct TreeNode { * int

2020-12-01 22:03:03 494

空空如也

空空如也

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

TA关注的人

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