我对一个名为Power的简单任务有问题,这里的条件是:
数字有超能力!他们可以改变自己。一个转换是通过替换:
每个0-与其相邻数的绝对差
所有其他偶数-其相邻数的最大值
每个1与其相邻数之和
所有其他奇数-及其相邻数的最小值
最左边和最右边的数字是邻居。序列的K-sum是序列K变换后的数之和。您的任务是查找给定序列的K-sum。
输入:输入数据作为一个参数-一个字符串数组。在第一输入行中,将有数字、N、和K,用空格分隔。在第二条输入线上是N数字--序列.
输出:输出应该打印在控制台上。输出给定序列的K-sum
示例:输入:5 1 9 0 2 4 1
Explanation:9 0 2 4 1变为0 7 4 2 13
输出:26 (和0 7 4 2 13)
**这是我的代码:**
'use strict';
function slove(args) {
let k = Number(args[0].split(' ')[1]);
let numbers = args[1].split(' ').map(Number);
function transform(num, left, right) {
if (num === 0) {
return Math.abs(left - right);
} else if (num % 2 === 0) {
return Math.max(left, right);
} else if (num === 1) {
return left + right;
} else {
return Math.min(left, right);
}
}
for (let i = 0; i < k; i++) {
let currentTransformation = [];
for (let j = 0; j < numbers.lenght; j++) {
let nextValue;
if (j === 0) {
nextValue = transform(numbers[j], numbers[numbers.lenght - 1], numbers[1]);
} else if (j === numbers.lenght - 1) {
transform(numbers[j], numbers[j - 1], numbers[0]);
} else {
nextValue = transform(numbers[j], numbers[j - 1], numbers[j + 1]);
}
currentTransformation[j] = nextValue;
}
numbers = currentTransformation;
}
let sum = 0;
for (let num of numbers) {
sum += num;
}
console.log(sum);
}
slove([
'5 1',
'9 0 2 4 1'
]);所以console.log(和)需要返回26,但它返回0.我找不到我的代码问题在哪里。
发布于 2018-11-29 18:02:10
您的代码有两个问题:
length,而不是lenghtif (j === numbers.length - 1)块中保存最后一个值
'use strict';
function solve(args) {
let k = Number(args[0].split(' ')[1]);
let numbers = args[1].split(' ').map(Number);
function transform(num, left, right) {
if (num === 0) {
return Math.abs(left - right);
} else if (num % 2 === 0) {
return Math.max(left, right);
} else if (num === 1) {
return left + right;
} else {
return Math.min(left, right);
}
}
for (let i = 0; i < k; i++) {
let currentTransformation = [];
for (let j = 0; j < numbers.length; j++) {
let nextValue;
if (j === 0) {
nextValue = transform(numbers[j], numbers[numbers.length - 1], numbers[1]);
} else if (j === numbers.length - 1) {
nextValue = transform(numbers[j], numbers[j - 1], numbers[0]); // HERE
} else {
nextValue = transform(numbers[j], numbers[j - 1], numbers[j + 1]);
}
currentTransformation[j] = nextValue;
}
numbers = currentTransformation;
}
let sum = 0;
for (let num of numbers) {
sum += num;
}
console.log(sum);
}
solve([
'5 1',
'9 0 2 4 1',
]);
https://stackoverflow.com/questions/53544415
复制相似问题