数据结构||STL库
Zero_979
计算机科学与技术硕士在读
展开
-
LeetCode 热题 C++ 621. 任务调度器
给你一个用字符数组tasks表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。然而,两个的任务之间必须有长度为整数n的冷却时间,因此至少有连续n个单位时间内 CPU 在执行不同的任务,或者在待命状态。你需要计算完成所有任务所需要的。8A -> B -> (待命) -> A -> B -> (待命) -> A -> B。原创 2023-03-12 18:35:52 · 336 阅读 · 0 评论 -
LeetCode 热题 C++ 338. 比特位计数 347. 前 K 个高频元素 394. 字符串解码
给你一个整数n,对于中的每个i,计算其二进制表示中 1,返回一个长度为n + 1的数组ans作为答案。原创 2023-03-04 11:55:29 · 368 阅读 · 1 评论 -
LeetCode 热题 C++ 146. LRU 缓存
请你设计并实现一个满足约束的数据结构。实现LRUCachecapacitykey-1keyvaluekey-valuecapacity函数get和put必须以O(1)的平均时间复杂度运行。// 缓存是 {1=1}// 缓存是 {1=1, 2=2}// 返回 1// 该操作会使得关键字 2 作废,缓存是 {1=1, 3=3}// 返回 -1 (未找到)// 该操作会使得关键字 1 作废,缓存是 {4=4, 3=3}// 返回 -1 (未找到)// 返回 3// 返回 4。原创 2023-02-24 11:45:27 · 254 阅读 · 0 评论 -
LeetCode 热题 C++ 128. 最长连续序列 136. 只出现一次的数字
给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为O(n)的算法解决此问题。4最长数字连续序列是9。原创 2023-02-23 10:47:37 · 275 阅读 · 0 评论 -
LeetCode 热题 C++ 85. 最大矩形
给定一个仅包含0和1、大小为的二维二进制矩阵,找出只包含1的最大矩形,并返回其面积。6最大矩形如上图所示。0010。原创 2022-11-28 21:56:03 · 476 阅读 · 0 评论 -
LeetCode 热题 C++ 84. 柱状图中最大的矩形
给定n个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。求在该柱状图中,能够勾勒出来的矩形的最大面积。10最大的矩形为图中红色区域,面积为 104。原创 2022-11-25 21:33:54 · 433 阅读 · 0 评论 -
LeetCode 热题 C++ 56. 合并区间
以数组intervals表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].[[1,5]]区间 [1,4] 和 [4,5] 可被视为重叠区间。原创 2022-11-07 16:35:34 · 135 阅读 · 0 评论 -
LeetCode 热题 C++ 49. 字母异位词分组
给你一个字符串数组,请你将组合在一起。可以按任意顺序返回结果列表。是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。原创 2022-11-05 19:34:32 · 224 阅读 · 0 评论 -
LeetCode 热题 C++ 46. 全排列 48. 旋转图像
给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以返回答案。原创 2022-11-05 16:48:26 · 143 阅读 · 0 评论 -
LeetCode 热题 C++ 42. 接雨水 (两种解法:栈&动态规划)
给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。6上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。9。原创 2022-11-04 22:38:23 · 313 阅读 · 0 评论 -
LeetCode 热题 32. 最长有效括号
给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = "(()"输出:2解释:最长有效括号子串是 "()"示例 2:输入:s = ")()())"输出:4解释:最长有效括号子串是 "()()"示例 3:输入:s = ""输出:0提示:s[i] 为 '(' 或 ')'原创 2022-10-11 17:17:07 · 167 阅读 · 0 评论 -
LeetCode 热题 23. 合并K个升序链表
之前那题合并两个链表还是写的复杂了,每次加入新的链表不需要每次new一个新结点的。这题就是在之前合并两个链表的基础上改进的。一共K个链表,那只要操作K次合并两个链表即可。原创 2022-10-05 20:36:25 · 153 阅读 · 0 评论 -
LeetCode 热题 21. 合并两个有序链表 22. 括号生成(STL全排列解法)
当有一个链表跑完后,再把剩下的链表全部放进新链表中。(其实这一部分我的代码写复杂了,不用一个一个放的,可以直接指向剩余部分。两个有序列表分别开始从头遍历,每个结点都比较一下大小,把小的结点放在新的链表里,取到结点的那个链表继续往后走。但是STL全排列只能数字排列,所以我们用0代表左括号,1代表右括号。进行排列并且检查后,再放入答案里即可。思路比较简单,把所有可能的括号顺序都列出来,然后查看括号是否合法就好了。我的方法比较特殊,用到了STL库里的全排列。原创 2022-09-22 16:23:40 · 377 阅读 · 0 评论 -
LeetCode 热题 17. 电话号码的字母组合 19.删除链表的倒数第 n 个结点 20. 有效的括号
递归思路:遍历第一个字符串,每加入一个字母后开始递归下一个字符串,递归完后弹出这个字母。递归终止条件:当遍历到了最后一个字符串,就把生成的字符串加入到动态数组中,并结束该轮递归。分析一下题目,很好掌握规律。因为前后都是有顺序的,并且第一个的第一个字母对应第二个全部执行完,再执行第一个的第二个字母,这时候我们就可以想到用递归来解决。用t和p两个指针,t走到n后p再往后走,这样等到t走完的时候,p就是倒数第n个点了。看代码应该很容易看懂()删除的话就直接看代码吧。原创 2022-09-21 13:36:57 · 112 阅读 · 0 评论 -
【剑指Offer】BM49 表达式求值
数据范围:0\le |s| \le 1000≤∣s∣≤100,保证计算结果始终在整型范围内。要求:空间复杂度: O(n)O(n),时间复杂度 O(n)O(n)请写一个整数计算器,支持加减乘三种运算和括号。之前一篇写了,这题也是套用了那题的代码。...原创 2022-08-04 13:23:49 · 201 阅读 · 0 评论 -
1358:中缀表达式值(expr)
题目描述】输入一个中缀表达式(由0-9组成的运算数、加+减-乘*除/四种运算符、左右小括号组成。注意“-”也可作为负数的标志,表达式以“@”作为结束符),判断表达式是否合法,如果不合法,请输出“NO”;否则请把表达式转换成后缀形式,再求出后缀表达式的值并输出。注意:必须用栈操作,不能直接输出表达式的值。【输入】一行为一个以@结束的字符串。【输出】如果表达式不合法,请输出“NO”,要求大写。如果表达式合法,请输出计算结果。【输入样例】1+2*8-9@【输出样例】8。...原创 2022-08-03 14:07:49 · 1374 阅读 · 0 评论 -
1334:【例2-3】围圈报数
有nn个人依次围成一圈,从第11个人开始报数,数到第mm个人出列,然后从出列的下一个人开始报数,数到第mm个人又出列,…,如此反复到所有的人全部出列为止。设nn个人的编号分别为1,2,…,n1,2,…,n,打印出列的顺序。nn和mm。出列的顺序。4 17【输出样例】1 3 4 2【提示】n≤100n≤100。 动态的队列,没有选到的数字就加在队列末,不断往下算。...原创 2022-06-26 23:54:13 · 449 阅读 · 0 评论 -
1333:【例2-2】Blah数集
大数学家高斯小时候偶然间发现一种有趣的自然数集合Blah,对于以a为基的集合Ba定义如下:(1)a是集合Ba的基,且a是Ba的第一个元素;(2)如果x在集合Ba中,则2x+1和3x+1也都在集合Ba中;(3)没有其他元素在集合Ba中了。现在小高斯想知道如果将集合Ba中元素按照升序排列,第N个元素会是多少?输入包括很多行,每行输入包括两个数字,集合的基a(1≤a≤50))以及所求元素序号n(1≤n≤1000000)。对于每个输入,输出集合Ba的第n个元素值。1 10028 5437【输出样例】4原创 2022-06-24 15:17:02 · 835 阅读 · 0 评论 -
1332:【例2-1】周末舞会
假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。规定每个舞曲能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一个程序,模拟上述舞伴配对问题。第一行两队的人数;第二行舞曲的数目。配对情况。4 67【输出样例】1 12 23 34 41 52 63 1思路:没用队列()给小学生讲的时候还得用队列再写一遍。。...原创 2022-06-24 15:11:10 · 254 阅读 · 0 评论 -
1355:字符串匹配问题(strs)
字符串中只含有括号,判断输入的字符串中括号是否匹配。如果括号有互相包含的形式,从内到外必须是,例如。输入: 输出:,而输入都应该输出。第一行为一个整数nn,表示以下有多少个由括好组成的字符串。接下来的nn行,每行都是一个由括号组成的长度不超过255255的字符串。在输出文件中有nn行,每行都是或。5{}{}<><>()()[][]{{}}{{}}<<>><<>>(())(())[[]][[]]{{}}{{}}<<&原创 2022-06-23 19:55:53 · 1509 阅读 · 0 评论 -
1357:车厢调度(train)
有一个火车站,铁路如图所示,每辆火车从A驶入,再从B方向驶出,同时它的车厢可以重新组合。假设从A方向驶来的火车有nn节(n≤1000n≤1000),分别按照顺序编号为11,22,33,…,nn。假定在进入车站前,每节车厢之间都不是连着的,并且它们可以自行移动到B处的铁轨上。另外假定车站C可以停放任意多节车厢。但是一旦进入车站C,它就不能再回到A方向的铁轨上了,并且一旦当它进入B方向的铁轨,它就不能再回到车站C。负责车厢调度的工作人员需要知道能否使它以a1a1,a2a2,…,anan的顺序从B方向驶出,请来判原创 2022-06-23 15:26:17 · 417 阅读 · 0 评论 -
1354:括弧匹配检验
假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如或等为正确的匹配,或或均为错误的匹配。现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配?输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出 “” ,不匹配就输出“”。输入一个字符串:,输出:。输入仅一行字符(字符个数小于255255)。匹配就输出 “” ,不匹配就输出“”。[(])【输出样例】Wrong思路:遇到 ( 和 [ 就把它压入栈,遇到 ) 和 ] 就读取栈顶,如果匹配的话,删除栈原创 2022-06-19 22:34:44 · 497 阅读 · 0 评论 -
1353:表达式括号匹配(stack)
假设一个表达式有英文字母(小写)、运算符(+,—,∗,/+,—,∗,/)和左右小(圆)括号构成,以“@@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YESYES”;否则返回“NONO”。表达式长度小于255255,左圆括号少于2020个。一行数据,即表达式。一行,即“YESYES” 或“NONO”。2*(x+y)/(1-x)@【输出样例】YES【提示】【样例输入2】(25+x)*(a*(a+b+b)@【样例输出2】NO思路:原创 2022-06-19 20:03:57 · 570 阅读 · 0 评论 -
P1449 后缀表达式
后缀表达式原创 2022-06-18 20:39:41 · 276 阅读 · 0 评论 -
【剑指Offer】JZ53 数字在升序数组中出现的次数
原文地址:牛客网描述给定一个长度为 n 的非降序数组和一个非负数整数 k ,要求统计 k 在数组中出现的次数数据范围:0≤k≤100,数组中每个元素的值满足≤val≤100要求:空间复杂度O(1),时间复杂度O(logn)示例1输入:[1,2,3,3,3,3,4,5],3返回值:4示例2输入:[1,3,4,5],6返回值:0思路:因为时间复杂度是O(logn),所以用二分查找。代码:class Solution {p..原创 2022-03-13 20:32:26 · 827 阅读 · 0 评论 -
【剑指Offer】JZ23链表中环的入口结点
题目地址:链表中环的入口结点_牛客题霸_牛客网题目:描述给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。数据范围:n\le10000n≤10000节点值范围:[1,10000]要求:空间复杂度O(1)O(1),时间复杂度O(n)O(n)例如,输入{1,2},{3,4,5}时,对应的环形链表如下图所示:可以看到环的入口结点的结点值为3,所以返回结点值为3的结点。输入描述:输入分为2段,第一段是入环前的链表部分,第二段...原创 2021-11-05 20:27:20 · 167 阅读 · 2 评论 -
【剑指Offer】JZ3从尾到头打印链表 C++
题目地址:牛客网题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。示例1输入{67,0,24,58}返回值[58,24,0,67]思路:先把链表放进栈里,利用栈后进先出的性质,装到vector里。最后输出vector。代码:/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val原创 2021-03-18 20:47:13 · 139 阅读 · 4 评论 -
【剑指Offer】JZ27字符串的排列 C++(STL库全排列)
题目地址:牛客网题目:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。示例1输入“ab”返回值[“ab”,“ba”]思路:一看到题目就想到了在紫书里学的STL库里的全排列。但是因为输入的是string,所以先把它转到char数组里,但是输出数组又会出错,所以输出时再转原创 2021-03-12 22:27:38 · 113 阅读 · 0 评论 -
【剑指Offer】JZ13调整数组顺序使奇数位于偶数前面 C++
题目地址:牛客网题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。示例1输入[1,2,3,4]返回值[1,3,2,4]思路:建两个vector,奇数放一个,偶数放一个,再把偶数放在奇数后面。代码:class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可原创 2021-03-11 22:47:46 · 180 阅读 · 3 评论 -
【剑指Offer】JZ5用两个栈实现队列
题目地址:牛客网题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:因为栈是一头进出,队列是一头进一头出,所以只要第一个栈进,第二个栈接受第一个栈出来的元素再弹出,就能模拟队列。代码:class Solution{public: void push(int node) { stack1.push(node); } int pop() { while(!stack1.empty())原创 2021-03-06 16:39:07 · 139 阅读 · 0 评论 -
【考研每日一题34】全排列(C++)
原题地址:牛客网题目描述给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。 我们假设对于小写字母有'a' < 'b' < ... < 'y' < 'z',而且给定的字符串中的字母已经按照从小到大的顺序排列。输入描述:输入只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1到6之间。输出描述:输出这个字符串的所有排列方...原创 2020-04-22 22:14:06 · 1282 阅读 · 0 评论 -
【考研每日一题1】成绩排序(C++)
题目来源:牛客网-点击即可进入页面题目描述:查找和排序题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理。示例:jack70peter96Tom70smith67从高到低成绩peter96jack70Tom70...原创 2020-03-19 00:29:06 · 630 阅读 · 0 评论 -
UVA - 156 Ananagrams C++
思路:先把所有的单词转换成小写并从小到大排列的单词。然后用map统计每个单词出现的个数。再把只出现一次的放进vector里。代码:#include<iostream>#include<vector>#include<map>#include<string>#include<algorithm>using n...原创 2018-07-18 14:08:14 · 253 阅读 · 0 评论 -
UVA - 10815 Andy's First Dictionary C++
思路:就……放在set里就好了。介绍两个函数isalpha判断大小写,tolower把大写改为小写。代码:#include<iostream>#include<set>#include<string>#include<cctype>#include<sstream>using namespace std;int ...原创 2018-07-18 11:59:02 · 124 阅读 · 0 评论 -
UVA - 101 The Blocks Problem C++
uva的题目太难复制了,,所以不发题目了。思路:……刘汝佳的代码妙啊。有三个指令都涉及到归位,也就是把某木块上面的木块全部放回原位,所以写一个归位的函数clera_above。把a及其上方的木块移动到b上方,pile_onto。还有一个最开始判断a和b的高度以及位置的函数find_block。如果两个木块在同一个堆里,那么指令无效。代码:声明一下这是紫书的代码。#in...原创 2018-07-18 10:50:42 · 194 阅读 · 0 评论 -
UVA - 10410 Tree Reconstruction C++
题目:https://odzkskevi.qnssl.com/b080f15130ed0e43b4c0769fe4c61dff?v=1531969963思路:参考了https://blog.csdn.net/keshuai19940722/article/details/38778243和https://www.cnblogs.com/jerryRey/p/4622927.html代码...原创 2018-07-23 15:03:22 · 256 阅读 · 0 评论 -
UVA - 10474 Where is the Marble? C++
题目地址:https://vjudge.net/contest/238732#problem/A题目:Raju and Meena love to play with Marbles. They have got a lot of marbles with numbers written on them. At the beginning, Raju would place the mar...原创 2018-07-17 17:52:45 · 379 阅读 · 0 评论 -
POJ - 3253 Fence Repair C++【优先队列】
题目地址:http://poj.org/problem?id=3253题目:DescriptionFarmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needs N (1 ≤ N ≤ 20,000) plan...原创 2018-07-17 17:14:49 · 108 阅读 · 0 评论 -
POJ - 2431 Expedition C++【优先队列】
题目地址:http://poj.org/problem?id=2431题目:DescriptionA group of cows grabbed a truck and ventured on an expedition deep into the jungle. Being rather poor drivers, the cows unfortunately managed to ...原创 2018-07-17 16:27:17 · 413 阅读 · 0 评论 -
L2-024 部落 C++(并查集)
题目地址:https://pintia.cn/problem-sets/994805046380707840/problems/994805056736444416题目:在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同一个部落。输入格式...原创 2018-07-16 16:08:25 · 526 阅读 · 0 评论