给定一个整数数组 nums,请编写一个能够返回数组“中心下标” 的方法。 中心下标是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心下标,返回-1。如果数组有多个中心下标,应该返回最靠近左边的那一个。 注意:中心下标可能出现在数组的两端
输入:
{1,2,3,2,5,6,1,2,3,1,6}
输出:5
暴力解法:
public class Test3 {
public static void main(String[] args){
int nums[]={1,2,3,2,5,6,1,2,3,1,6};
int flag =1;
for(int i =0;i<nums.length;i++){
int sum1=0;
int sum2=0;
for(int j=0;j<i;j++){
sum1+=nums[j];
}
for(int k=i+1; k<nums.length;k++){
sum2+=nums[k];
}
if(sum1==sum2){
System.out.println(i);//数组下标
System.out.println(nums[i]);//对应的值
flag = 2;
break;
}
}
if(flag==1){
System.out.println("没找到");}
}
}
使用数组指针解法:
public class Test3_1 {
public static void main(String[] args){
int nums[]={1,2,3,2,5,6,1,2,3,2,6};
int sum=0,sum1=0;
for(int i:nums){
sum+=i;
}
int flag=1;
for(int j=0;j<nums.length-1;j++){
sum1+=nums[j];
if(sum1==(sum-sum1-nums[j+1])){
System.out.println(j+1);
flag = 2;
break;
}
}
if(flag==1){
System.out.println("没找到");
}
}
}