整数型の配列NUMSを考えると、「センター指数」の配列を返すメソッドを記述してください。
配列インデックスの中央の左右側面上のすべての要素の合計とすべての要素の和に等しい:配列インデックスとして、我々は、中心が定義されています。
中央インデックス配列が存在しない場合、我々は返す必要があります-1。配列は、中央インデックスが複数ある場合は、我々は1つ左に最も近い返す必要があります。
例1:
入力:
NUMS = [1、7,3 ,. 6 ,. 5 ,. 6]
出力:3
説明:
インデックス3(NUMS [3] = 6 ) の左及び(1 + 7 + 3 = 11)の数、および右の及び辺の数(5 + 6 = 11)は等しいです。
一方、図3は、インデックスの要求に沿って第1の中心です。
NUMS = [1、7,3 ,. 6 ,. 5 ,. 6]
出力:3
説明:
インデックス3(NUMS [3] = 6 ) の左及び(1 + 7 + 3 = 11)の数、および右の及び辺の数(5 + 6 = 11)は等しいです。
一方、図3は、インデックスの要求に沿って第1の中心です。
例2:
入力:
[1、2 ,. 3] NUMS =
出力:-1
説明:
この条件が存在しないアレイの中央インデックスを満たします。
[1、2 ,. 3] NUMS =
出力:-1
説明:
この条件が存在しないアレイの中央インデックスを満たします。
説明:
NUMSの長さの範囲は[0、10000]です。
任意NUMS [I]は[-1000 1000]の範囲の整数です。
【解決方法】各rightSumの電流値を減算して、再び第1トラバースrightSumの合計として計算され、leftSum = 0を設定し、その後、横断します
再び継続する[I] leftSum、それらが等しい場合見つけるため、そうでなければleftSumプラスNUMSの値と比較されます。
パブリック クラスのテスト{ 公共 のint pivotIndex(INT [] NUMS){ int型 ANS = -1 。 int型 rightSum = 0 ; int型 leftSum = 0 ; 以下のために(int型:NUMS)を{ rightSum + = A。 } 以下のために(INT ; I <nums.length; iが0 = I ++ ){ rightSum - = NUMS [I]。 もし(rightSum == leftSum){ ANS = I; 休憩; } 他{ leftSum + = NUMS [I]。 } } リターン歳; } パブリック 静的 ボイドメイン(文字列[]引数){ // INT DIS = 1。 INT [] NUMS = {1,7、3、6、5、6 }。 System.out.println(新しいテスト()pivotIndex(NUMS)。)。 } }