文和906
文和906
全部文章
题解
未归档(4)
项目笔记(5)
归档
标签
去牛客网
登录
/
注册
文和906的博客
全部文章
/ 题解
(共103篇)
题解 | #斐波那契数列#
基础斐波那契数列,基础递归方法。 class Solution { public: int Fibonacci(int n) { if(n == 1 || n == 2){ return 1; } else{ ...
C++
递归
2021-10-14
0
276
题解 | #数字在升序数组中出现的次数#
题目中要求时间复杂度O(logn),所以直接用二分查找。 总体思路是通过二分查找找到要找的数,然后在查找该数周围相同的数,最后返回累计计数。复杂度满足题目要求。因为写完一次过了,所以代码结构还有较大调整空间。 class Solution { public: int GetNumberOfK...
C++
二分查找
2021-10-13
0
343
题解 | #字符串的排列#
刚看到题其实稍微有点蒙,不过看了题目配的图就很简单了。图里已经给出了一种解题思路。按顺序遍历遍历字符串,对每一个字符都调换它以及大于等于它的下标的字符,将新得到的字符串压栈,并对新字符串也执行该操作,直到遍历完整个字符串。由于调用的层数比较深,这里选择递归的方法来实现。传入参数中的index为开始交...
C++
字符串
递归
排列组合
2021-10-13
0
392
题解 | #旋转数组的最小数字#
这题常规使用二分查找来解,这里先皮一下,直接用set初始化函数排序,两行代码秒解。同理也可以直接用sort函数排序,也是两行解。ps: 使用set函数初始化的运行速度和使用sort排序的时间基本一致,都是超过95%www。空间复杂度上当然sort更优。 class Solution { public...
C++
二分查找
2021-10-13
0
328
题解 | #滑动窗口的最大值#
模拟窗口滑动的过程,用一个数组来记录滑动窗口内的值,一个数组来记录最大值。每次窗口滑动都将最大值数组的队尾压入结果栈,最后返回结果栈。 这题要做出来并不难,难在追求优秀的时间复杂度和空间复杂度。感觉这个代码还有较大改进空间。欢迎讨论。 class Solution { public: vec...
C++
队列
2021-10-12
0
383
题解 | #翻转单词序列#
难度较低的题目。在经历了前面的字符串处理地狱之后,这种题目我看过之后心里毫无波澜,甚至还有点想笑w。言归正传,总体的思路是:将string作为char[]遍历,遇到空格则切词,并将切下的词入栈。最后按出栈顺序将字符串拼好即可。需要注意空格的处理方式,这里我的做法是每次切词都加上空格,对头尾特殊处理。...
C++
字符串
栈
2021-10-12
0
379
题解 | #栈的压入、弹出序列#
审题后从输入序列和输出序列入手,发现规律:当两个元素在输入序列中的先后顺序与在输出序列中一致时,在这两个数之后输入的数必不可能在这两个数之前输出。围绕这一发现,设计算法逻辑:用一个辅助数组seq来储存输入序列的元素在输出序列中的位置,如seq[0]则表示输入序列中第一个元素在输出序列中的位置。遍历s...
C++
栈
2021-10-12
0
399
题解 | #包含min函数的栈#
需求是在基本栈的功能上增加一个min的功能。 这里选择增加一个栈用于维护最小值,暂且称它为最小栈。 每次push时检查最小栈,为空则直接入最小栈,否则将入原始栈元素与栈顶元素比较,若入原始栈元素小于等于最小栈栈顶元素,则也将其入最小栈。之所以等于时也要入最小栈,是因为相等说明前面有一个同样数据的结点...
C++
栈
2021-10-12
0
383
题解 | #序列化二叉树#
这道题本身挺简单的,但是坑是真的多,给我整破防了。 先说一下大概的思路,直接用层序遍历来序列化。序列化的时候使用一个队列来辅助将结点值拼接到字符串上,节点为空则拼接#。反序列化时同理,使用队列来辅助反序列化,创建好的节点先入队,并且查看队头结点的情况,若其左结点为空,则将该结点设为队头结点的左结点,...
C++
字符串
二叉树
队列
2021-10-11
0
432
题解 | #把二叉树打印成多行#
之前做过一道一模一样但是名字不同的题。这次就当是复习了。思路就不再写了,可以点这里看。 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int ...
C++
二叉树
广度优先搜索
2021-10-11
0
349
首页
上一页
1
2
3
4
5
6
7
8
9
10
下一页
末页