青叶摩卡
青叶摩卡
全部文章
分类
归档
标签
去牛客网
登录
/
注册
青叶摩卡的博客
TA的专栏
0篇文章
0人订阅
面试高频榜单思路
0篇文章
0人学习
面试高频榜单思路梳理
0篇文章
0人学习
面试高频榜单思路梳理
0篇文章
0人学习
全部文章
(共136篇)
题解 | #孩子们的游戏(圆圈中最后剩下的数)#
约瑟夫环问题,从只剩下一个人开始反推class Solution { public: int LastRemaining_Solution(int n, int m) { int res = 0; for (int i = 2; i <= n; i++)...
2022-12-07
0
291
题解 | #扑克牌顺子#
需要满足几个条件:区间长度小于5没有重复的元素只要满足这两个条件,区间缺失的元素或者不足的长度都能用0补足。去重时,由于本题扑克牌最大也只有13,所以可以用int去重,第i位代表已有牌i。class Solution { public: bool IsContinuous( vector&l...
2022-12-06
0
280
题解 | #翻转单词序列#
基本思路:先反转整个字符串,这样可以让单词之间的相对顺序满足,但是每个单词本身倒序,所以接下来只要通过查找空格,确定每个单词并反转就行了。class Solution { public: string ReverseSentence(string str) { if (str...
2022-12-06
0
291
题解 | #左旋转字符串#
设字符串长度为len,实际上左移len位得到的就是原来的字符串,所以实际上左移n % len位就够了。观察左移后的字符串可发现,最左边的n位移到了最右边n位,我们可以通过反转字符串实现,但是反转字符串后,左右两边的顺序都反转了,所以分别将左右两边再反转一遍就可以了。class Solution { ...
2022-12-06
0
272
题解 | #和为S的两个数字#
哈希表存储已经遍历过的数,遍历当前数时直接查找遍历过的数是否满足条件即可。class Solution { public: vector<int> FindNumbersWithSum(vector<int> array,int sum) { unor...
2022-12-06
0
238
题解 | #和为S的连续正数序列#
基本思路:滑动窗口,维护左端点l与右端点r,由于至少有两个数,所以循环终止条件为l < r。通过左端点与右端点可以算出区间和,如果大于目标则右移左端点,小于则右移右端点,等于则将滑动窗口内的数存储在结果中。由于每次只滑动一个数,且要求的是区间和,所以区间和可以在滑动窗口滑动时计算,避免了乘法运...
2022-12-06
0
278
题解 | #数组中只出现一次的数字#
这道题有一个前置题目,就是将本题的条件改为“一个整型数组里除了一个数字n之外,其他的数字都出现了两次”。先来解决这道前置题目,可以想到用异或运算解决,出现两次的数字异或之后为0,而0^n = n,所以最后得到的数一定是n。接下来解决本题。本题有两个数字只出现一次,所以依次异或一遍得到的是两个数字做异...
2022-12-06
0
265
题解 | #判断是不是平衡二叉树#
递归思路:空树一定为平衡二叉树一棵树是平衡二叉树,首先需要它的左右子树都是平衡二叉树,这点可以用返回值bool来递归解决一棵树是平衡二叉树,其次需要它自己左右子树的高度差不超过1,这点不能用bool来解决,所以考虑将返回值改成pair<bool, int>,bool存储是否为平衡二叉树,...
2022-12-06
0
254
题解 | #二叉树的深度#
。。。class Solution { public: int TreeDepth(TreeNode* pRoot) { if (!pRoot) return 0; return max(TreeDepth(pRoot->left), TreeDepth(pRoot->r...
2022-12-06
0
265
题解 | #数字在升序数组中出现的次数#
基本思路:有序数组,所以可以线性时间复杂度遍历找到该长度。优化:有序数组中的查找一般都是将线性查找优化为二分搜索。可以转变一下思路,求出该数组中第一个大于等于k的数的下标,以及第一个大于等于k+1,即大于k的数的下标,这两者相减,即为[k, k+1)区间内的数的个数,也即为k的个数。class So...
2022-12-06
0
215
首页
上一页
5
6
7
8
9
10
11
12
13
14
下一页
末页