题目答案
1008
题目解析
有 n 个节点的二叉树的叶子节点个数最多有(n+1)/2 个(因为度为 2 的结点数比度为 0 的叶子结点数少 1,要让叶子节点数尽量多,那么尽可能只包含这两类结点),有一种简单的构造方法如下所示:
我的答案
It has 19 lowercases
我的错因
大意马虎
题目答案
It has 18 lowercases
题目解析
这个程序统计了字符串中小写字母的个数。一定不要把大写字母也数上!!!(本人亲历)
题目答案
填空位置 ①:
offset = 4
填空位置 ②:
(offset + dayNum[i]) % 7
填空位置 ③:
dayNum[m]
填空位置 ④:
i
填空位置 ⑤:
(offset + i) % 7
题目解析
首先我们先看到较为简单的第三、四两空,这两空对应的过程显然就是输出日历了。for循环内应该是对每一天输出一个日期,因此循环范围就应该是这个月的天数,也就是dayNum[m]。什么时候应该输出换行符呢?要么就是所有日期输出完毕了(i==dayNum[m]),要么就是输出了一个星期之后进行换行,所以这里对应的就是每个星期结束,也就是当i为 7 的倍数时进行换行。下面再回过来看前两空。通过上面一个for循环可以看出来这个offset是用来控制月历开始的时候要输出多少的空位,再参照题目给出的第一个月的月历就可以知道offset初值应该是 4,即第一空对应需要做的事情。但是这个offset只是对于第一个月正确,因此需要再加上所有小于 1 月的月份的天数,计算offset的方法即为(offset+dayNum[i]) % 7
题目答案
填空位置 ①:
lbound < rbound
填空位置 ②:
count = 0
填空位置 ③:
x[i] > mid
填空位置 ④:
count++
填空位置 ⑤:
rbound = mid
题目解析
这是一道经典的左闭右闭的二分题,整个题目的过程为:先二分答案,再遍历整个数组验证。第一空是二分的条件,所以应该为lbound<rbound。第二空应该是将计数器count初始化操作,第三空、第四空就对应着统计大于(或小于)mid的数值个数的条件与过程,第五空则是调整右边界,可以参照左边界的调整方法仿写为rbound=mid。