滴滴笔试
环境:牛客的编译环境
语言:JavaScript
☕️难点:其实不难..开始我写了一个add函数专门去处理arr[i]+arr[i+1],后来觉得没什么用,就删了,直接tmp=arr[i] + arr[i+1],然后过不去..时间到了以后才明白,直接加是字符串相加..于是我又加了parseInt,但是因为时间到了,我也不知道这个对不对。代码思路是没问题的。
题目:时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
有一把魔法权杖,权杖上有n颗并排的法术石(编号为1到n)。每颗法术石具有一个能量值,权杖的法术强度等同于法术石的最小能量值。权杖可以强化,一次强化可以将两颗相邻的法术石融合为一颗,融合后的能量值为这两颗法术石能量值之和。现在有m次强化的机会,请问权杖能强化到的最大法术强度是多少?
输入
第一行包含两个正整数n,m,表示n颗法术石,m次强化机会。
第二行为n个用空格隔开的正整数v1, v2, … ,vn,vi表示编号为i的法术石具有的能量值。
数据范围:1≤m
输出1个整数,表示权杖的最大的法术强度。
样例输入
6 3
1 7 2 2 5 9
样例输出
8
Hint
样例说明:合并1、7得到 { 8 2 2 5 9 },合并2、2得到 { 8 4 5 9 },合并4、5得到 { 8 9 9 },法术强度等于8。
我的代码:
var Max = function(meg,arr) {
//请在此处编写你的代码,其他部分请勿修改,否则不记分。
//begin
var num = meg.split(' ')[1],
start = -1,
end = -1,
tmp;
arr = arr.split(' ');
while(num--){
var result = 0;
for(let i = 0; i < arr.length - 1; i++){
if( i != i+1){
tmp = parseInt(arr[i])+ parseInt(arr[i+1]);
if(tmp < result && result != 0){
result = tmp;
start = i;
end = i+1;
}
else if(result == 0){
result = tmp;
start = i;
end = i + 1;
}
}
else{
result = arr[i];
}
}
arr[start] = result;
arr.splice(end,1);
}
return arr.sort()[0];
//end
}
// 以下代码请勿修改
var meg = read_line();
var arr = read_line();
print(Max(meg,arr))