目录
执行时长
考察理解能力
题目描述
为了充分发挥GPU算力,需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务,
假设GPU最多一次执行n个任务,一次执行耗时1秒,在保证GPU不空闲情况下,最少需要多长时间执行完成
输入描述
第一个参数为GPU一次最多执行的任务个数,取值范围[1,10000]
第二个参数为任务数组长度,取值范围[1,10000]
第三个参数为任务数组,数字范围[1,10000]
输出描述
执行完所有任务最少要要多少秒
示例1
输入
3
5
1 2 3 4 5
输出
6
说明
一次最多执行3个任务,最少耗时6s。
示例2
输入
4
5
5 4 1 1 1
输出
5
说明
一次最多执行4个任务,最少耗时5s
解析
按顺序执行,每次用最多执行的任务个数减去当前的任务个数和上次剩余的个数,如果有剩余的任务未执行就留到下一次,
如果没有则下一次剩余的任务为0,最后剩下的任务直接除以最多执行的任务个数向上取整。
function executeTime(n, len, arr) {
let tmp = 0
for (let i = 0; i < len; i++) {
if (n > arr[i]) {
tmp = (tmp - n + arr[i]) < 0 ? 0 : (tmp - n + arr[i])
} else {
tmp = tmp + arr[i] - n
}
}
return len + Math.ceil(tmp / n)
}
console.log(executeTime(3, 5, [1, 2, 3, 4, 5]))
console.log(executeTime(4, 5, [5, 4, 1, 1, 1]))
找数字
考察二进制和十进制的转换
题目描述
小扇和小船今天又玩起来了数字游戏,
小船给小扇一个正整数 n(1 ≤ n ≤ 1e9),小扇需要找到一个比 n 大的数字 m,使得 m 和 n 对应的二进制中 1 的个数要相同,如:
4对应二进制100
8对应二进制1000
其中1的个数都为1个
现在求 m 的最小值。
输入描述
输入一个正整数 n(1 ≤ n ≤ 1e9)
输出描述
输出一个正整数 m
示例1
输入
128
输出
256
示例2
输入
6
输出
9