【 NO.1 使数组中所有元素都等于零】
% [, G/ z; z7 i+ k: h( u" Y: N 解题思路 答案即不同元素的个数。 代码展示 ' J; W P* Y% u# w4 K' }
【 NO.2 分组的最大数量】
5 x0 b+ E8 t$ V. k0 h% N 解题思路 排序后,第 1 个学生自己一组,然后 2 个学生一组,然后 3 个学生一组... 即第 i 组有 i 个学生。 等差数列求和,(i + 1) * i / 2 <= n, 解方程即可。 代码展示
【 NO.3 找到离给定两个节点最近的节点】' k6 F4 | Q- A5 r/ t
解题思路 用 BFS 求最短路即可。 代码展示
+ Q! Y. x0 a0 f N- a& y( z1 j1 f" W
【 NO.4 图中的最长环】
) R0 R5 l' {9 \$ w( Z B 9 t& G* [' A% O+ q, Z3 N8 ~6 P/ s
解题思路 类似 Tarjan 缩点算法,利用时间戳找环。 每访问一个新的点,时间戳自增,然后尝试从这个节点出发,观察它能访问到的历史时间戳,做减法得到环的长度。 代码展示 , i" A8 @* X) w+ ^4 t8 G; h. T
) W! l; l. k! ~; a$ K0 G
|