如何查看Codility(和其他站点)测试的输入值?

因此,我在link to the task's descriptionlesson 9中为MaxProfit练习(codility for programmers)编写了一个解决方案。我的最终分数是88%(代码位于最下面,但是您可以随意阅读整篇文章,在其中详细说明我的问题,我相信这是一个不知道如何深入阅读页面代码的问题,但也许我无法从客户端访问此类信息。

这是我要解决的第25个练习,当然,所有以前的练习都以100%的最终成绩解决了,当然,我仍然在多周前就不再怀疑如何看待练习实际测试一致性的运行(不仅是测试的标题和获得/期望的值),因为有时它不显示,所以您必须猜测,即使它始终可以让您了解可能会失败的地方测试的标题,以及当期望另一个代码时从代码中获得什么价值。

当您获得有关失败测试的详细信息时,这是页面向您抛出的非常详细的输出。

  

分析摘要

     
     

已检测到以下问题:错误的答案。 (如果出现问题,则始终显示此问题)
  [0,2000] expected 2000 got 0 (您并不总是能获得有关 input 的详细信息,但是总能获得有关失败和成功测试的更多详细信息的底部)

此后,您始终可以看到有关测试的以下详细信息(即使一切正常),这很有用,但有时还不够。

以下输出是本练习中代码结果的一部分(您实际上可以看到包含完整结果here的页面)

  

检测到的时间复杂度:O(N)
  ▶示例长度=6✔确定
  ▶simple_1 V-pattern>序列,长度=7✔OK
  ▶simple_desc降序和升序序列长度=5✔OK
  ▶simple_empty为空且[0,200000]序列✔确定
   ▶two_hills两个递增的子序列✘WRONGANSWER
  有3000个预期的99000-> 1.0.020错误的答案,有3000个预期的99000


正如您在上一次测试中看到的,我得到了错误的答案。但是我看不到有关输入的详细信息,也看不到代码中的输入如何失败。它只说

  

two_hills增加了两个子序列,并获得3000个预期的99000

但这还不够!我测试了[2,3,7,22,1,51]作为输入,它返回了50,还测试了[1,51,2,22],也返回了50,这是两个递增的子序列,对吗?所以我真的不明白。但是,这个问题还是关于我如何确定页面正在测试two_hills以及实际上所有其他测试的值(正如我之前说的,它有时 显示测试失败时的输入, 并非总是 ,但是它 从不 显示输入测试成功)。

可以在浏览器的控制台中看到此输入吗?我找不到它。

最后,这是我的代码。


using System;

class Solution {
    public int solution(int[] A) {
        var maxProfit = 0;
        if ( A.Length > 2)
        {
            var minBuyPrice = Math.Min(A[0],A[1]);
            var maxSellPrice = minBuyPrice;
            for (int i = 2; i < A.Length; i++)
            {
                if ( minBuyPrice > A[i])
                {
                    minBuyPrice = A[i];
                    maxSellPrice = A[i];
                }
                maxSellPrice = Math.Max(maxSellPrice,A[i]);
                maxProfit = Math.Max(maxProfit,maxSellPrice - minBuyPrice);
            }
        }
        else if ( A.Length == 2)
        {
            return Math.Max(0,A[1] - A[0]);
        }
        return maxProfit;
    }
}
xbl_lkz 回答:如何查看Codility(和其他站点)测试的输入值?

我摆脱了那个丑陋的else if语句,并得到了100%,这是我的最终代码。

using System;

class Solution {
    public int solution(int[] A) {
        var maxProfit = 0;
        if (A.Length >= 2)
        {
            var minBuyPrice = Math.Min(A[0],A[1]);
            var maxSellPrice = Math.Max(0,A[1] - A[0]);
            maxProfit = maxSellPrice;   

            for (int i = 2; i < A.Length; i++)
            {
                if (minBuyPrice > A[i])
                {
                    minBuyPrice = A[i];
                    maxSellPrice = A[i];
                }
                maxSellPrice = Math.Max(maxSellPrice,A[i]);
                maxProfit = Math.Max(maxProfit,maxSellPrice - minBuyPrice);
            }
        }
        return maxProfit;
    }
}
本文链接:https://www.f2er.com/3128789.html

大家都在问