簡體   English   中英

如何操作Java中的數組?

[英]How to manipulate the array in Java?

從一個 1 索引的零數組和一個操作列表開始,對於每個操作,我必須為兩個給定索引之間的每個數組元素添加值,包括在內。 執行完所有操作后,我必須返回數組中的最大值。 但是對於大多數測試用例來說,每次都會出現錯誤的答案,並且對於某些測試用例來說,時間限制已經超過了。 請幫我解決這個問題。

我正在使用 arrayManipulation function 來獲取數組元素的數量和查詢數組。 更新 function 用於更新(添加元素)數組。

import java.util.*;
import java.util.Arrays;
public class sample
{
public static void main(String args[])
{
    int maximum=0;
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    int m=sc.nextInt();
    int queries[][]=new int[m][3];
    for(int x=0;x<m;x++)
    {
        for(int y=0;y<3;y++)
        {
            queries[x][y]=sc.nextInt();
        }
    }
    maximum=arrayManipulation(n,queries);
    System.out.println(maximum);

}
public static int arrayManipulation(int num,int qry[][])
{
    int a=0,b=0,k=0;
    int max=Integer.MIN_VALUE;
    int arr[]=new int[num];
    int arr2[]=new int[num];
    for(int i=0;i<num;i++)
    {
         arr[i]=0;
    }
    for(int j=0;j<qry.length;j++)
    {
        for(int kl=0;kl<qry[0].length;kl++)
        {
            a=qry[j][kl];
            b=qry[j][kl+1];
            k=qry[j][kl+2];
            break;
        }
       arr2=update(a,b,k,arr);
       int lengtharr2=arr2.length;
       max=Math.max(max,arr2[lengtharr2-1]);
    }
    return max;
}

public static int[] update(int a1,int b1, int k1,int array[])
{

    for(int i=a1;i<b1;i++)
    {
        array[i]+=k1;
    }
    Arrays.sort(array);
    return array;
}
}

輸入:10 表示數組元素個數,3 表示沒有。 由 a、b、k 值組成的查詢,其含義如下:左索引、右索引和 summand

10 3

1 5 3

4 8 7

6 9 1

我的 output:

11

預期 output:

10

在這個 for 循環中:

for(int kl=0;k<qry[0].length;k++)
{
    a=qry[j][kl];
    b=qry[j][kl+1];
    k=qry[j][kl+2];
    break;
}

為什么在循環條件中使用兩個不同的變量( kkl )?

無論如何,您應該為循環使用其他變量,謝謝k ,因為您正在更新k的值,然后在循環的每次迭代中執行k++ ,這很可能會弄亂您的 output。

考慮類似的事情:

for(int l=0;l<qry[0].length;l++)
{
    a=qry[j][kl];
    b=qry[j][kl+1];
    k=qry[j][kl+2];
    break;
}

暫無
暫無

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

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