牛客283182957号
牛客283182957号
全部文章
题解
归档
标签
去牛客网
登录
/
注册
牛客283182957号的博客
全部文章
/ 题解
(共37篇)
题解 | #没有重复项数字的全排列#
代码比较简单。但是算法思想直接看没看懂,结合手动模拟,能更好的感受。 每一个大层的for循环控制当前元素即 全排列就是对数组元素交换位置,使每一种排列都可能出现。因为题目要求按照字典序排列输出,那毫无疑问第一个排列就是数组的升序排列, 它的字典序最小,后续每个元素与它后面的元...
C++
2022-06-30
0
225
题解 | #三数之和#
解体思路:需要三个数相加为0,则另外两个数相加应该为上述第一个数的相反数,我们可以利用双指针在剩余的子数组中找有没有这样的数对。 ···双指针指向剩余...
C++
2022-06-27
0
267
题解 | #数组中出现次数超过一半的数字#
map 需要注意map的语法 for(inti = 0; i < numbers.size(); i++){ &...
C++
2022-06-27
0
172
题解 | #两数之和#
1.解题思路。 改进暴力破解的双重遍历,用一遍遍历,一边往下找一边判断tag-当前值是否之前遇到过,遇到过就找到了两个值了。 2.关于哈希。 a。题目中,键与键值分别是, 当前数字 ----&nbs...
C++
2022-06-27
0
271
题解 | #表达式求值#
对于上述两个要求,我们要考虑的是两点,一是处理运算优先级的问题,二是处理括号的问题。 处理优先级问题,那必定是乘号有着优先运算的权利,加号减号先一边看,我们甚至可以把减号看成加一个数的相反数,则这里只有乘法和加法,那我们优先处理乘法,遇到乘法,把前一个数和后一个数乘起来,遇到加法就把这些数字都...
C++
2022-06-24
0
362
题解 | #数据流中的中位数#
传统的寻找中位数的方法便是排序之后,取中间值或者中间两位的平均即可。但是这道题因为数组在不断增长,每增长一位便需要排一次, 很浪费时间,于是可以考虑在增加数据的同时将其有序化,这个过程就让我们想到了插入排序:对于每个输入的元素,遍历已经有序的数组,将其插入到属于它的位置。 ...
C++
2022-06-24
0
307
题解 | #寻找第K大#
1.快排,就是每个元素都归位,如果某一元素刚好在k位那他就是第k大 第一个元素temp 然后第1位为 i 最后一个为j 从j开始j--,如果遇到比temp大的应该在左边,放入i 然后i++,直到比temp小的应该放在右边 j的位置 然后继续j--,&nb...
C++
2022-06-23
0
319
题解 | #最小的K个数#
优先队列即PriorityQueue, 是一种内置的机遇堆排序的容器,分为大顶堆与小顶堆,大顶堆的堆顶为最大元素,其余更小的元素在堆下方,小顶堆与其刚好相反。且因为容器内部的次序基于堆排序,因此每次插入元素时间复杂度都是O(log2n)O(log_2n)O(log2n),而每次取出堆顶元素都是...
C++
2022-06-23
0
275
题解 | #滑动窗口的最大值#
我们都知道,若是一个数字A进入窗口后,若是比窗口内其他数字都大,那么这个数字之前的数字都没用了,因为它们必定会比A早离开窗口,在A离开之前都争不过A,所以A在进入时依次从尾部排除掉之前的小值再进入,每次有新值进入的时候,都会判断是不是比当前的值小,所以每次其实都比较判断了一次。如果新值比当前值(窗口...
C++
2022-06-23
0
364
题解 | #有效括号序列#
step 1:创建辅助栈,遍历字符串。 step 2:每次遇到小括号的左括号、中括号的左括号、大括号的左括号,就将其对应的呦括号加入栈中,期待在后续遇到。 step 3:如果没有遇到左括号但是栈为空,说明直接遇到了右括号,不合法。 step 4:其他情况下,如果遇...
C++
2022-06-22
0
263
首页
上一页
1
2
3
4
下一页
末页