题目一 找到差值为k的数字对的个数
问题描述
在n个元素的数组中,找到差值为k的数字对去重后的个数
输入描述:
1 | 第一行,n和k,n表示数字个数,k表示差值 |
输出描述:
1 | 差值为k的数字对去重后的个数 |
示例 1
输入
1 | 5 2 |
输出
1 | 3 |
说明
1 | 其中数字对分别为 (1, 3), (5, 3), (4, 2) |
示例 2
输入
1 | 6 2 |
输出
1 | 3 |
说明
1 | 其中数字对分别为 (1, 3), (5, 3), (4, 2) |
示例 3
输入
1 | 4 0 |
输出
1 | 1 |
说明
1 | 其中数字对分别为 (1, 1) |
备注:
1 | 数据范围: |
解决方案
这道题目在 LeetCode 有相应的题目,题目为 532. K-diff Pairs in an Array,这道题目我在另一篇博文做了解答,可以参考 LeetCode 532 - K-diff Pairs in an Array
题目二 求函数调用次数
问题描述
定义两个字符串变量:s 和 m,再定义两种操作。
第一种操作:
1 | m = s; |
第二种操作:
1 | s = s + m; |
假设 s, m 初始化如下:
1 | s = "a"; |
求最小的操作步骤数,可以将 s 拼接到长度等 n
输入描述:
1 | 一个整数n,表明我们需要得到s字符串长度 |
输出描述:
1 | 一个整数,表明总共操作次数 |
示例 1
输入
1 | 6 |
输出
1 | 3 |
说明
1 | 输入是6,表明我们需要得到s字符串长度为6,也就是s最终为"aaaaaa",那么依次使用2次"第一次操作“和1次"第二种操作"就能达到目的,总共操作次数是3。 |
示例2
输入
1 | 5 |
输出
1 | 4 |
说明
1 | 假设n=5,表明我们需要得到s字符串长度为5,也就是s最终为"aaaaa",那么直接使用4次"第二种操作“就能达到目的,总共操作次数是4。 |
示例3
输入
1 | 4 |
输出
1 | 2 |
说明
1 | 假设n=4,表明我们需要得到s字符串长度为4,也就是s最终为"aaaa",那么直接使用2次"第一种操作"就能达到目的,总共操作次数是2。 |
题目三
没记录到。。。
题目四 Magic
问题描述
给一个包含n个整数元素的集合a,一个包含m个整数元素的集合b。定义magic操作为,从一个集合中取出一个元素,放到另一个集合里,且操作过后每个集合的平均值大于操作前。注意以下两点:
- 不可以把一个集合的元素取空,这样就没有平均值了
- 值为x的元素从集合b取出放入集合a,但集合a中已有值为x的元素,则a的平均值不变 (因为集合元素不会重复),b的平均值可能会改变 (因为x被取出了)
问最多可以进行多少次magic操作?
输入描述:
1 | 第一行为两个整数n,m |
输出描述:
1 | 输出一个整数,表示最多可以进行的操作次数。 |
示例 1
输入
1 | 3 5 |
输出
1 | 2 |
说明
1 | 依次从b集合取出3,4元素放入a集合 |
题目五 跳板小游戏
问题描述
小T最近迷上了一款跳板小游戏。已知空中有N个高度互不相同的跳板,小T刚开始在高度为0的地方,每次跳跃可以选择与自己当前高度绝对值差小于等于H的跳板,跳跃过后到达以跳板为轴的镜像位置,问小T在最多跳K次的情况下最高能跳多高? (任意时刻,高度不能为负)
输入描述:
1 | 第一行三个整数N,K,H |
输出描述:
1 | 一个整数,表示最高能跳到的高度 |
示例 1
输入
1 | 3 3 2 |
输出
1 | 8 |
说明
1 | 小T初始在高度为0的地方 |
备注:
1 | 对于40%的数据,1 <= N, K, H, Ti <= 20 |