文和906
文和906
全部文章
分类
未归档(4)
项目笔记(5)
题解(103)
归档
标签
去牛客网
登录
/
注册
文和906的博客
全部文章
(共113篇)
题解 | #扑克牌顺子#
用一个长度为14的数组来储存给出的5张牌中每张牌出现的次数。遍历数组,将出现的数字在计数数组中对应的位置加1,若其加1后大于2,切其本身不为0,则返回false。因两张不为joker的牌重复则不可能为顺子。遍历时记录出现的最大值与最小值。遍历完后用最大值减去最小值,若大于4则返回false,因为五张...
C++
模拟
2021-10-21
0
410
题解 | #顺时针打印矩阵#
模拟顺时针遍历矩阵的过层,先求出矩阵有多少层(圈),然后按层遍历。每次都从该圈左上角的点按照向右,向下,向左,最后向上的顺序遍历,然后按相同顺序遍历内圈。这种做法由于默认了给出的矩阵最少有两行两列,所以在遇到单行或单列时容易出现问题,为解决这一问题,在遍历完右和下时,判断结果数组内的元素个数是否已与...
C++
数组
模拟
2021-10-21
0
394
题解 | #求1+2+3+...+n#
一开始完全没有头绪,查看了别的同学的做法后醍醐灌顶。首先加减法是可以用的,而其他一切循环手段和乘除法都不能用。既然循环语句不能用,那么就只能递归了。问题是在于递归如何设置结束条件,if语句不能使用。这段代码的巧妙之处就在于利用了&&逻辑与的短路执行特性,只要遇到一个假,后面则不再执行...
C++
数学
脑筋急转弯
2021-10-20
0
322
题解 | #数组中只出现一次的两个数字#
开始时没看到空间复杂度的要求,选择使用键值对来存储数组信息。第一次遍历数组,将数组中的数字及其出现次数记录到map中。第二次遍历map,找到其中仅出现过1次的数,加入到结果数组中返回。这种做法提交后运行时间打败前100%还让我有点小激动。 class Solution { public: /...
C++
数学
位运算
2021-10-20
0
359
题解 | #数值的整数次方#
模拟幂的运算过程,对于正数次幂、0次幂、非负次幂分别处理。 class Solution { public: double Power(double base, int exponent) { double result = 1; if(!exponent){...
C++
数学
2021-10-20
0
326
题解 | #二进制中1的个数#
对于非负数,其补码就是其源码,若其为偶数则最右边一位为0,若其为基数则最右边一位为1,每次判断其奇偶性,并更改1的个数,然后将数字右移一位,直到数字为0。对于负数,其补码为原码取反再加一,不好直接通过奇偶性统计1的个数,要先模拟该数变为补码的操作,所以先将其取绝对值,再转换为无符号类型unsigne...
C++
数学
2021-10-20
0
315
题解 | #不用加减乘除做加法#
通过异或运算可以得到两数的无进位加法结果,通过与后左移一位可以得到进位,结合这两个运算就可以得到加法结果。 class Solution { public: int Add(int num1, int num2) { int result = num1 ^ num2; ...
C++
数学
2021-10-20
0
325
题解 | #数据流中的中位数#
由于题目中没有对空间复杂度和时间复杂度做要求,所以上来先考虑较为直接的解法。建立一个数组用于保存数据流,每次插入数据都将数据存入数组中,在调用获取中位数的方法时,先调用sort对数组进行排序,再获得中位数。 class Solution { public: void Insert(int n...
C++
排序
2021-10-20
0
334
题解 | #数组中的逆序对#
开始想到的是用一个二重循环来遍历数组。 class Solution { public: int InversePairs(vector<int> data) { if(!data.size()){ return 0; } ...
C++
数组
归并排序
2021-10-19
1
524
题解 | #数组中重复的数字#
题目中要求时间复杂度O(n),可知不能使用排序来做。同时要求空间复杂度为O(n),则可以使用经典的空间换时间方法做。创建一个与输入数组numbers相同长度的数组count,用于记录numbers中每个数出现了几次。遍历数组,每遍历一个数就将count中下标为该数的元素++,并判断++后该元素的值。...
C++
数组
2021-10-19
7
778
首页
上一页
1
2
3
4
5
6
7
8
9
10
下一页
末页