簡體   English   中英

我不知道為什么我的代碼給出了錯誤的答案

[英]I don't know why my code is giving wrong answer

給定一個由 0 和 1 組成的數組 A,我們最多可以將 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/

這是問題鏈接。 在第一個測試用例中,我得到 output 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);
}

您不需要提供數組的大小,因為您可以從數組中獲取大小。 如果使用更好的變量名,代碼的可讀性會更好。 此外,您可以使用 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;
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM