算法题--华为od机试考试(执行时长、找数字、数据最节约的备份方法)

目录

执行时长

题目描述

输入描述

输出描述

示例1

输入

输出

说明

示例2

输入

输出

说明

解析

找数字

题目描述

输入描述

输出描述

示例1

输入

输出

示例2

输入

输出

示例3

输入

输出

解析

数据最节约的备份方法

题目描述

输入描述

输出描述

备注

示例1

输入

输出

示例2

输入

输出

解析


执行时长

考察理解能力

题目描述

为了充分发挥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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值