当前位置: 首页 > 知识库问答 >
问题:

我不知道为什么我的代码给出了错误的答案

滑骞尧
2023-03-14

给定一个0和1的数组,我们最多可以将K个值从0更改为1。

返回仅包含1的最长(连续)子数组的长度。

例1:

Input: A = [1,1,1,0,0,0,1,1,1,1,0], K = 2
Output: 6
Explanation: 
[1,1,1,0,0,1,1,1,1,1,1]
Bolded numbers were flipped from 0 to 1.  The longest subarray is underlined.

例2:

Input: A = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3
Output: 10
Explanation: 
[0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
Bolded numbers were flipped from 0 to 1.  The longest subarray is underlined.

注:

1 <= A.length <= 20000
0 <= K <= A.length
A[i] is 0 or 1 

https://leetcode.com/problems/max-consecutive-ones-iii/

这是问题链接。在第一个测试用例中,我得到了输出9,但应该是6。我不知道哪里出了问题?

 public static int f(int arr[],int n,int tar)
 {
   
    int st=0,maxc=0,maxf=0;
    //tar=tar+1;
    for(int i=0;i<n;i++)
    {
        int se=i-st-maxc;
        if(arr[i]==1)
       maxc++++;
        while(i-st-maxc>tar)
        {
            maxf=Math.max(maxf, i-st);
            st++;
        }
       
    }
    return maxf+1;
}
public static void main(String[] args)
{
    Scanner p=new Scanner(System.in);
    int n,target;
    n=p.nextInt();
    target=p.nextInt();
    int arr[]=new int[n];
    for(int i=0;i<n;i++)
    {
        arr[i]=p.nextInt();
    }
    int ans=f(arr,n,target);
    System.out.println(ans);
}

共有1个答案

拓拔元徽
2023-03-14

您不需要提供数组的大小,因为您可以从数组中获取大小。如果使用更好的变量名,代码的可读性会更好。此外,您可以使用if语句来检查更改的值,而不是计数。

这是解决方案的示例

  public static int longestOnes(int[] A, int K) {
    var maxCount = 0;
    for (int i = 0; i < A.length; i++) {
      var count = 0;
      var k = 0;
      for (int j = i; j < A.length; j++) {
        if (A[j] == 1) {
          count++;
        }
        if (A[j] == 0) {
          if (k >= K) {
            if (count > maxCount) {
              maxCount = count;
            }
            break;
          }
          count++;
          k++;
        }
      }
    }
    return maxCount;
  }
 类似资料:
  • 抱歉,如果不允许这样做。这是我第一次问问题。无论如何,我应该实现一个程序,根据文本读取等级。 “实施一个程序,根据以下内容计算理解某些文本所需的大致年级水平。文本:恭喜!今天是你的一天。你要去很棒的地方!你走了,走了!3 年级 在完成代码之后。每次我编译它时,它都会给我一个异常,即我除以零。几乎就像在我要求用户输入文本后,它根本不被读取,字母计数保持在零。我不知道如何绕过它。下面是我导入java.

  • 作为一名链表数据结构的学习者,我正在练习Leetcode问题“反向链表”,我有自己的解决方案,但不知道为什么它是错误的,有专家可以分享一些指导吗?真的很感激! Leetcode问题: 反转单链接列表。 例: 输入:1- 输出: 5- 我的代码: 然而,上述解决方案是错误的,但可以通过在“temp.next=prev”和“head=head.next”之间切换位置进行纠正,如下所示: 对我来说,切换

  • 我拿不到输出。。有人能帮我得到输出吗 下面给出了程序运行的示例(注意:下面的粗体文本是用户输入的输入): 输入三角形的三条边

  • 我试图使java编译类文件,但它抛出了一个错误,如何修复它。

  • 这是我的代码。它正在传递问题语句中给出的测试用例。问题链接:http://www.spoj.com/problems/ACPC10D/tri[i][j]存储从tri[0][1]到达索引(i, j)的最小值。

  • 我拿不到输出。。有人能帮我得到输出吗 下面给出了程序运行的示例(注意:下面的粗体文本是用户输入的输入): 进入三角形的三个边