讲道理的豹子说这不是bug
讲道理的豹子说这不是bug
全部文章
分类
归档
标签
去牛客网
登录
/
注册
讲道理的豹子说这不是bug的博客
TA的专栏
99篇文章
6人订阅
刷题题解(c++)
96篇文章
900人学习
算法知识总结
3篇文章
859人学习
全部文章
(共100篇)
题解 | #两数之和#
来自专栏
方法:哈希表具体步骤:从头开始遍历数组,判断目标值减去当前遍历值是否能在哈希表中找到;如果能找到则返回哈希表中的value和当前遍历的数组序号;如果没找到,则将该键值存入哈希表,继续往下遍历数组。时间复杂度:o(n)。遍历数组需要时间o(n),哈希表查找时间复杂度为o(1)。空间复杂度:o(n)。创...
2023-08-01
1
188
题解 | #滑动窗口的最大值#
来自专栏
方法:双向队列双向队列就是一种特殊的队列,双向队列两边,即头部和尾部都可以进行插入元素和删除元素的操作,但是也只能插入到最尾部或者最头部,每次也只能取出头部元素或者尾部元素后才能取出里面的元素。具体做法:step 1:维护一个双向队列,用来存储数列的下标。step 2:首先检查窗口大小与数组大小。s...
2023-08-01
1
374
题解 | #表达式求值#
来自专栏
方法:栈+递归该题的难点在于如何处理括号和运算符的优先级。问题一,如何处理括号:当遇到括号‘(’,进行递归处理,直到括号被处理成数字;这样表达式就是数字之间的运算,而没有括号。问题二,如何处理运算符的优先级:当遇到加法运算符的时候,将后面的数字直接压入栈中; ...
2023-07-31
1
318
题解 | #数据流中的中位数#
来自专栏
方法:插入排序具体步骤:1、当数组为空时,直接插入数据;当数组不为空时,遍历数组寻找合适的位置进行插入;这样得到的数组就行排序好的。 2、获取数据流的中位数。时间复杂度:o(n)。空间复杂度:o(n)。 class Solution { public: vect...
2023-07-28
1
257
题解 | #寻找第K大#
来自专栏
方法一:快排此题很容易想到,先将数组进行从大到小的排序,第K大的数字就是排序数组的第K个元素,可以使用快排进行排序。时间复杂度:o(nlogn)。空间复杂度:o(n)。递归深度。 class Solution { public: void quick_sort(vector<int...
2023-07-27
2
328
题解 | #最小的K个数#
来自专栏
方法一:排序将输入的数组进行排序,取前 K个值即可时间复杂度:O(nlongk)空间复杂度:O(1) class Solution { public: vector<int> GetLeastNumbers_Solution(vector<int>& in...
2023-07-26
1
305
题解 | #有效括号序列#
来自专栏
方法:辅助栈 借助辅助栈,当遇到'(','[','{'这三种字符的时候则让对应的匹配字符入栈(分别对应')',']','}'),当出现的字符不是'(','[','{'这三种字符时,则先判断栈是否为空或者当前字符是否与栈顶元素一样,当栈空或者当前字符与栈顶字符不一样时,则括号序列不合法,直接返回...
2023-07-23
1
302
题解 | #包含min函数的栈#
来自专栏
具体做法:1、构建两个栈,用于实现查找栈的最小值;2、栈stack1按正常压入元素;栈stack2用来实现获取栈的最小值:当stack2为空时,将元素压入栈;如果输入的元素大于stack2栈顶的元素,那么stack2就压入与栈顶相同的元素(因为此时栈中的最小元素依然是栈顶元素);当输入元素不大于栈顶...
2023-07-23
1
258
题解 | #用两个栈实现队列#
来自专栏
具体做法:1、将其中一个栈stack1作为元素插入使用;2、当需要删除元素时,将stack1的元素从栈顶压入到stack2,这时stack2的栈顶元素就是队列的第一个元素;3、再将stack2的元素从栈顶压入到stack2,以便后续插入元素时使用。 class Solution { public...
2023-07-23
1
207
题解 | #序列化二叉树#
来自专栏
方法:递归1、利用递归得到二叉树的前序遍历;2、将前序遍历转换为二叉树。代码中有很多细节需要处理:string和char类型之间的转换,字符与数字之间的转换。时间复杂度:o(n)空间复杂度:o(n) class Solution { public: //前序遍历 void Ser...
2023-07-23
1
300
首页
上一页
1
2
3
4
5
6
7
8
9
10
下一页
末页