首页 > 解决方案 > 在 google kickstart 中,我怎么知道为什么我通过了测试集 1 而失败了测试集 2?

问题描述

我是 Google kickstart 的新手,我发现我很难弄清楚为什么我通过了一个测试集但没有通过另一个测试集,有什么地方可以让我看到测试集吗?我正在处理关于 Round A, 2018 的第一个问题,这是我使用 javascript 的解决方案:

//read input, output the answer
const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});
let t
let count = 1
let result
rl.on("line", function(line) {
    if (t === undefined) {
        t = line
    } else {
        result = `Case #${count}: ${solve(line)}`
        console.log(result)
        if (++count > t) {
            rl.close()
        }
    }
}).on("close", function() {
    process.exit(0)
})



function solve(num) {
    const digits = num.split("")
    num = Number(num)
    for (let i = 0; i < digits.length; i++) {
        let digit = Number(digits[i])
        digits[i] = digit
        //find the first odd digit and increase/decrease it by 1, followed by all 0 or all 8
        if (digit % 2 === 1) {
            if (digit !== 9)
                return Math.min(Math.abs(num - calculateAllEvenNum(i, digit - 1, 8, digits)), Math.abs(num - calculateAllEvenNum(i, digit + 1, 0, digits)))
            else
                return Math.abs(num - calculateAllEvenNum(i, digit - 1, 8, digits))
        }
    }
    return 0
}

function calculateAllEvenNum(startOfOdd, evenDigit, remain, digits) {
    const len = digits.length
    let allEvenNum = 0
    for (let i = 0; i < len; i++) {
        if (i > startOfOdd) {
            allEvenNum = allEvenNum * 10 + remain
        } else if (i === startOfOdd) {
            allEvenNum = allEvenNum * 10 + evenDigit
        } else {
            allEvenNum = allEvenNum * 10 + digits[i]
        }
        
    }
    return allEvenNum
}

我通过了测试集 1 并没有通过测试集 2,有人可以帮我找出原因吗? 在此处输入图像描述

标签: javascriptalgorithm

解决方案


推荐阅读