如何知道数组元素是否完美居中?

时间:2015-08-14 12:15:48

标签: java arrays

{3, 2, 10, 4, 1, 6, 9}是完全居中的数组,因为10+4+1=15序列前面和后面有相同数量的元素i,e两个。

  mid=arraylength/2;
    for(int i=0;i<arraylength;i++){
           int sum=a[mid]+a[mid+1+i]+a[mid-1-i];
           if(sum==15) break;
}

在计算sum=15之后,如何知道10,4,1之前和之后是否有相同数量的元素?

3 个答案:

答案 0 :(得分:0)

据我所知,你的范围是检查一个int数组是否居中。对于居中,你的意思是中心和右/左边的元素之和等于15.你没有检查扩孔元素的数量是否相同,因为对于奇数个元素,如果你给一个奇数(3),你得到一个偶数。 (在这种情况下,元素的数量是7,居中的是3,扩孔是4,每边2)。 以下是您的问题的工作代码:

private static int SUM = 15;

public static void main(String[] args) {
    int array[] = {3,2,10,4,1,6,9};
    if(calculateSum(array)==SUM){
        System.out.println("The array is centered");
    }else{
        System.out.println("The array is not centered");
    }

}

public static int calculateSum(int array[]){
    int center = array.length/2;
    int result = array[center-1]+array[center]+array[center+1];
    return result;
}

答案 1 :(得分:0)

我认为你试图在上述问题上实现的就是这个。

public static int  isCentered(int [] arr) {
    int sum= 0;
    int expectedSum=15;
    int mid = arr.length/2;
    int len= arr.length;
    for (int i = 0;  i <len ; i++) {
        sum=arr[mid]+arr[mid+1+i]+arr[mid-1-i];
        if(sum==expectedSum){
            if ((len-3)%2==0){
                return 1;
            }else{
                return 0;
            }
        }else {
            return 0;
        }
    }
    return 0;
}

答案 2 :(得分:0)

/* sampleData
* {3, 2, 10, 4, 1, 6, 9}
* {2, 10, 4, 1, 6, 9}
* {3, 2, 10, 4, 1, 6}
* {9, 15, 6}
* {15}
* {14}
*/

public class IsCentered15 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int[] sampleData = { 11 };
        int result = isCentered15(sampleData);

        System.out.println(result);

    }

    static int isCentered15(int[] a) {

        int returnValue = 0;
        int centeredIndex = 0;
        int sum = 0;

        if ((a.length % 2) == 0) {

            returnValue = 0;

        } else if (a.length == 1) {

            if (a[0] == 15) {
                returnValue = 1;
            } else {
                returnValue = 0;
            }

        } else {

            /*
             * as we know index start from 0, example a.length = 7 and center of index will
             * be index of 3. So int 7/2 = 3 *
             */

            centeredIndex = (a.length / 2);
            sum = a[centeredIndex - 1] + a[centeredIndex + 1] + a[centeredIndex];
            int centeredValue = a[centeredIndex];

            if (sum == 15 || centeredValue == 15) {

                returnValue = 1;

            }
        }
        return returnValue;
    }

}