牛客785764796号
牛客785764796号
全部文章
分类
题解(22)
归档
标签
去牛客网
登录
/
注册
牛客785764796号的博客
全部文章
(共21篇)
题解 | #放苹果#
include<bits/stdc++.h> using namespace std; int fun(int m,int n){ if(m<0 || n<=0) return 0; if(m==1 || n==1 || m==0) return 1; re...
2021-09-05
0
202
题解 | #合唱队#
本质是求最长递增递减子序列问题,通常这样的问题,我们可以转化为,一个数左边最多有多少个数递增,右边有多少个数递减。然后相加减去自己就是合唱队最大的长度。记录代码:for(int i=0;i<len;i++){ for(int j=0;j<i;j++){ if(high[i]&...
2021-09-05
0
208
题解 | #字符串的排列#
终于看懂字典序算法了,自己动手实现的。字典序前提,字符之间有顺序关系就像在字典中的一样。另外,给定的序列最好是最小的排列,就是1234等,那么我们就从小到大遍历。我们首先要明白,怎么找比1234最小的序列呢,从后缀开始处理,我们希望从右到左,较大的数替换左边小的数,以1234为例,4最大,ok,找它...
2021-07-22
0
292
题解 | #对称的二叉树#
争取每一题都记录。树很容易就想到递归,针对本题,对称的二叉树,左右对称,那么左右子树高度一致,且各个结点也是对称的。那么我们不妨用递归遍历。确定递归截止条件:左右结点大小不一样,左右结点一个是叶子结点,另一个不是。不到截止条件,递归继续。代码: class Solution { private: ...
2021-07-14
0
331
题解 | #孩子们的游戏(圆圈中最后剩下的数)#
这个问题就是约瑟夫环问题。显然这个可以用链表实现,除了链表之外,可以观察其规律。n个人,需要报的数为m,那么被挑出的人就是(m-1)%n,下一个开始的人就是m%n,这是圆圈还有n-1个人。我们可以发现这不就是n-1个人,需要报的数为m的版本吗。所以我们需要看一看两者编号之间有无规律,m%n为开始,在...
2021-07-12
0
314
题解 | #机器人的运动范围#
回溯做法,遇到一个问题,形参前面&,一开始并不知道作用,后来发现是将形参与实参地址绑定,形参变化,实参也跟着变。代码: class Solution { private: vector<vector<int>> ret; public: int che...
2021-07-12
0
419
题解 | #二进制中1的个数#
这种问题,第一反应将其转化为二进制,计算1的个数(n%2),但是无法处理负数,因为负数用的补码。那么第二种就是位运算,这里存在一个问题,整数从左移位还是从右移位,如果是正数,那两边移位都可以,但是负数情况有些特殊,负数是补码。建议用1一次左移位去判断,给定数二进制位是否为1。以上就是自己的想法:代码...
2021-07-12
0
260
题解 | #数组中只出现一次的两个数字#
重复数字,第一反应是用map来做,但是map的方法需要空间复杂度O(n),那么还有其他方法吗?看了别人的方法,用异或可以做,原因是题目中只有两个数出现一次,其他数都出现了两次,而异或可以将两个相同的数运算变为0。可以得知对整个数组内的数逐次异或后,最终结果为a^b,这就是我们想获得的数。那么如何获得...
2021-07-12
0
322
题解 | #二维数组中的查找#
不做题解,第一次做二分查找,说一下二分查找的特点:针对有序数组,一定存在一个值,讲区间划分为两部分。代码: class Solution { public: bool Find(int target, vector<vector<int> > array) { ...
2021-07-10
0
280
题解 | #按之字形顺序打印二叉树#
思路还是层次遍历:对于之字形,我用的是栈来处理,栈用来反向输出。当然还可以用reverse函数。代码: class Solution { public: vector<vector<int> > Print(TreeNode* pRoot) { int...
2021-07-08
0
283
首页
上一页
1
2
3
下一页
末页