Codility - 功能改变

时间:2014-08-16 11:04:58

标签: java

我在这个密码测试中发现,问题是发现函数中的一个错误并调整它以使其正常工作。

传递给函数的数组是{1,3,3},K = 2。如果在数组中找不到K,则该函数应返回false,但它返回true。您只能更改2行代码。

public static bool solution(int[] A, int K)
    {

        int n = A.Length;
        for (int i = 0; i < A.Length - 1; i++)
        {
            if (A[i] + 1 < A[i + 1])
                return false;
        }
        if (A[0] == 1 && A[n - 1] != K)
            return false;
        else
            return true;

    } 

在正常情况下,我会重写函数,因为我知道它应该做什么:

public static bool solution(int[] A, int K)
    {
        int n = A.Length;
        int count = 0;
        for (int i = 0; i < A.Length - 1; i++)
        {
            if (A[i] == K)
            {
                count++;
            }
        }
        if (count == 0)
            return false;
        else
            return true;
    }

4 个答案:

答案 0 :(得分:0)

如果最初为for循环定义的条件可以按以下方式更改以使代码正常工作(如果K值与Array的元素匹配,则返回true)

public static bool solution(int[] A, int K)
{

    int n = A.length;
    for (int i = 0; i < A.length; i++)
    {
        if (A[i] == K) // This is the changed condition 
            return true;
    }
    if (A[0] == 1 || A[n - 1] != K)
        return false;
    else
        return true;

} 

答案 1 :(得分:0)

这在Java 8中是可能的

您需要进行以下更改

1-更改for循环中的if条件- 创建一个类型为Integer的列表-然后检查包含 注意-int列表将不起作用-包含项将对它不起作用

2-第二个返回true的return语句

这就是您只需更改两行即可完成的操作

public static  boolean sol (int[] a , int k){

    int n = a.length;

    for(int i=0;i<n-1;i++){
        if(! Arrays.stream( a ).boxed().collect( Collectors.toList() ).contains(k)){
            return false;
        }
    }
    if(a[0]!=1 && a[n-1]!=k){
        return true;
    }
    else{
        return true;
    }
}

答案 2 :(得分:-1)

我相信这是一个解决方案。

public static bool solution(int[] A, int K)
{

    int n = A.Length;
    for (int i = 0; i < A.Length - 1; i++)
    {
        if (A[i] + 1 < A[i + 1])
            return false;
    }
    if (A[0] == 1 || A[n - 1] != K)//Change here && to ||
        return false;
    else
        return true;

} 

答案 3 :(得分:-1)

正确答案下面的代码:

delete []