【问题标题】:Find out the odd value and meet criteria in java在java中找出奇数值并满足条件
【发布时间】:2014-09-25 17:48:26
【问题描述】:

我想在java中编写一个函数,接收一个参数并返回1或0,条件如下:

  1. 如果数组的长度是奇数,如果奇数之和大于偶数之和则返回1,否则返回0。

  2. 如果数组的长度是偶数,则检查小于等于10的最大数。如果是奇数,则返回1。如果是偶数,则返回0。

例如,使用以下数组:

array1 = {13, 4, 7, 2, 8}
array2 = {11, 7, 4, 2, 3, 10}

第一个数组返回 1,因为 13(odd) + 7(odd) = 20 大于 4 + 2 + 8 = 14。 第二个数组返回 0,因为 11, 7 是奇数,但 10 大于 7。

我已经尝试过,请检查以下内容:

   public static int isOddHeavy(int[] arr) {
        int summationOd = 0;
        int summationEv = 0;

        for (int i = 0; i < arr.length; i++) {
            if (i % 2 != 0) {
                summationOd = sumOddEven(arr);
            } else {
                summationEv = sumOddEven(arr);
            }
        }

        if(summationOd > summationEv) {
            return 1;
        } else {
            return 0;
        }

    }

    public static int sumOddEven(int[] arr) {
        int total = 0;
        for (int i = 1; i < arr.length; i++) {
            total += arr[i];
        }
        return total;
    }

【问题讨论】:

  • 我没有得到 "返回 0,因为有 11、7 是奇数,但是 10 大于 7" 部分。
  • 3 在array2 中是不是很奇怪?
  • 这里我不想在这里对奇数求和。实际上,我不想检查大于 10 的奇数。如果我得到大于 10 的奇数,那么我必须检查哪个奇数小于 10。你明白我的意思吗?
  • @Rustam 实际上,这是另一个条件。如果我找到一个小于 10 的更大奇数的数组,我不会移动到小于。假设我有 9、7、5、3、1。如果我取 9 并返回 0。
  • 还要小心,sumOddEven 中的 for 循环从 1(第二个元素)而不是 0(第一个元素)开始。

标签: java function


【解决方案1】:

这是一个 Java 函数,可以满足您的需求。只需遍历数组,更新变量并最后检查您的条件。

    public static int yourFunction(int[] arr) {
        int sumOdd = 0;
        int sumEven = 0;
        int maxOdd = 0;
        int maxEven = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] % 2 == 0) {
                sumEven += arr[i];
                if (maxEven < arr[i] && arr[i] <= 10)
                    maxEven = arr[i];
            }
            else {
                sumOdd += arr[i];
                if (maxOdd < arr[i] && arr[i] <= 10)
                    maxOdd = arr[i];
            }
        }
        if (arr.length%2 != 0)
            return (sumOdd > sumEven) ? 1 : 0;
        return (maxOdd > maxEven) ? 1 : 0;

    }

【讨论】:

    猜你喜欢
    • 2019-11-11
    • 2020-05-11
    • 1970-01-01
    • 2015-01-17
    • 2019-07-15
    • 2021-05-15
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    相关资源
    最近更新 更多