Java 编码功能改变
在这个可编译性测试中,问题是发现函数中的一个bug,并对其进行调整,使其正常工作 传递给函数的数组是{1,3,3},K=2。如果在数组中找不到K,则该函数应返回false,但返回true。您只允许更改2行代码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++) {
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;
}
}