Java 编码功能改变

Java 编码功能改变,java,Java,在这个可编译性测试中,问题是发现函数中的一个bug,并对其进行调整,使其正常工作 传递给函数的数组是{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++) {

在这个可编译性测试中,问题是发现函数中的一个bug,并对其进行调整,使其正常工作

传递给函数的数组是{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;

    } 
公共静态布尔解决方案(int[]A,int K)
{
int n=A.长度;
for(int i=0;i
在正常情况下,只要我知道函数应该做什么,我就重写它:

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;
    }
公共静态布尔解决方案(int[]A,int K)
{
int n=A.长度;
整数计数=0;
for(int i=0;i
我相信这是一个解决方案

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;

} 
公共静态布尔解决方案(int[]A,int K)
{
int n=A.长度;
for(int i=0;i
正确答案下面的代码:

public boolean solution(int[] A, int k) {
    int n = A.length;
    for (int i = 0; i < n - 1; i++) {
        if (!(A[i] == A[i + 1]) && !(A[i] == A[i + 1] - 1)) {
            System.out.println(A[i] + "-->" + A[i + 1]);
            return false;

        }
    }

    if (A[0] != 1 || A[n - 1] != k) {
        return false;
    } else {
        return true;
    }

}
公共布尔解决方案(int[]A,int k){
int n=A.长度;
对于(int i=0;i”+A[i+1]);
返回false;
}
}
如果(A[0]!=1 | A[n-1]!=k){
返回false;
}否则{
返回true;
}
}

如果循环的第一个定义的条件可以如下更改以使代码正常工作(如果K值与数组元素匹配,则返回true)

公共静态布尔解决方案(int[]A,int K)
{
int n=A.长度;
for(int i=0;i
这在java 8中是可能的

您需要做以下更改

1-更改for循环中的if条件- 创建Integer类型的列表,然后选中contains 注意-int列表将不起作用-contains将不起作用

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;
    }
}
publicstaticbooleansol(int[]a,int-k){
int n=a.长度;

for(int i=0;我不确定您在这里要问什么,当前代码似乎已经使用指定的输入返回了
false
。@EricBouwers注意到
for
并没有迭代到最后。函数到底应该做什么?任务是如何制定的?它应该只对{1,3,3}工作吗或者对于任何int数组和int K?@WindSwept:您是否获得了此问题的正确解决方案?
A[0]==1
部分似乎没有必要是的,但问题陈述有一个条件,即只有2行代码可以更改atmost,因此按照规定的规则,只更正了逻辑哦,我没有注意到您已经更改了两行,抱歉。但是,此条件破坏了逻辑,代码将在一段时间内返回true={3,3,3}和k=2。恐怕它仍然不起作用。对于a={1,2,3}和k=3,它将返回false。更改第二个if条件(将&&operator替换为| | operator),请让我知道这是否起作用
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;
    }
}