であるかどうかを確認します。数字の配列(整数)が与えられ、右辺の数値の和が等しい場合は要素を返す必要があります彼の左のサイズの数字の合計はo(n)です。私は私のコードを取り付け9 o(n)の配列の左辺の合計が
1 + 2 + 2 = 5、3 + 2 = 5
ため例えば配列{1,2,2,9,3,2} は、プログラムが印刷する必要なくそれは複雑さではありません。 ご協力いただきありがとうございます。
ありがとうございました。観察と
public class Program {
public static void checkIfEqualOption1(int[] arr){
int sumRight = 0;
int sumLeft=0;
//sumRight+=numbers[0];
for (int i=0; i < arr.length; i++){
if (i>0){
sumRight+=arr[i-1];
for (int j=i+1; j<arr.length; j++){
sumLeft+=arr[j];
}
if (sumRight==sumLeft){
System.out.println("\nFound = "+arr[i]);
break;
}
}
}
}
public static void print(int[] arr){
for (int i=0; i < arr.length; i++){
System.out.print(arr[i] + " ");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Hi");
int[] numbers = {1,2,2,9,3,2};
System.out.println("Array numbers:");
for (int i=0; i < numbers.length; i++){
System.out.print(numbers[i] + " ");
}
System.out.println("\n");
checkIfEqualOption1(numbers);
}
}
私はちょうど中間点を見つけて、次に2つの別々のループを持っています。最初のforループは中間点までの値を合計し、2番目のforループは中間点の後の値を合計します。次に、2つの合計を比較し、等しい場合は配列の中点値を返します。 –
最後の2つの合計を分割して征服し、最後の時間をマージします。 – MeetTitan
質問はo(n)かO(n)、小文字か大Oの表記ですか? – cuongptnk