给定一个整数数组 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("没找到");}}
}