2 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以使用以下代碼來(lái)解決問(wèn)題
static void Main(string[] args)
{
int[] array1 = {-3, 8, 3, 1, 1, 3}; // { -3, 8, 3, 1, 1, 3, 6, 1, 19 };
int indexPosition = GetIndex(array1);
if (indexPosition != -1)
{
Console.WriteLine(indexPosition);
}
}
static int GetIndex(int[] param)
{
if (param.Length < 0) return -1;
int leftSum = 0, rightSum = 0; int rightIndex = param.Length - 1;
for (int i = 0; i < param.Length; i++)
{
if (i < rightIndex)
{
if (leftSum > rightSum)
{
rightSum += param[rightIndex];
rightIndex -= 1;
}
else
{
if (i < rightIndex)
{
leftSum += param[i];
}
}
}
else
{
rightSum += param[rightIndex]; // if you are looking for only index position you can comment this line,
//variable rightSum and leftSum will give you the sum of left and right side of the array
rightIndex -= 1;
break;
}
}
return rightIndex;
}
希望這可以幫助 。

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
您的代碼有兩個(gè)問(wèn)題。一是變量i在同一個(gè)方法中被定義了兩次。另一個(gè)問(wèn)題是您只提供一個(gè)輸入?yún)?shù)而不是兩個(gè)。我什至不知道 x 應(yīng)該是什么參數(shù),因此也從我的改進(jìn)版本中刪除了它。我還刪除了 while 循環(huán),因?yàn)槲也幻靼啄阍谀抢镌噲D做什么。無(wú)論如何,這是我的代碼版本:
public static int findindex(int arr[]) {
if (arr == null) {
return -1;
}
int len = arr.length;
int leftsum = 0;
for(int i = 0; i < len; i++)
{
leftsum += arr[i];
int rightsum = 0;
for(int j = i+2; j < len; j++)
rightsum += arr[j];
if(leftsum == rightsum)
return i+1;
}
return -1;
}
public static void main(String[] args) {
int[] array1 = {-3, 8, 3, 1, 1, 3};
System.out.println(findindex(array1));
}
當(dāng)我從你的代碼中刪除所有不必要的東西時(shí),唯一的錯(cuò)誤是你應(yīng)該用 i+2 初始化 j,因?yàn)槿绻依斫饽愕囊?,你不想在索引本身和右?cè)包含元素正確編碼。
添加回答
舉報(bào)