📌  相关文章
📜  Java中奇数和偶数索引处可被大小整除的数组的总和

📅  最后修改于: 2022-05-13 01:55:22.022000             🧑  作者: Mango

Java中奇数和偶数索引处可被大小整除的数组的总和

给定一个大小为N的数组arr[] ,将给定数组转换为数组中偶数出现在奇数索引处,数组中奇数出现在偶数索引处,以及数组中数字之和是否可被整除数组的大小。如果数组遵循所有属性,则数组有效,否则无效。

如果数组符合所有给定的三个条件,则该数组将是有效的:

  1. 在给定的数组 arr[] 中,在每个偶数索引位置,它必须包含一个奇数。
  2. 在给定的数组 arr[] 中,在每个奇数索引位置,它必须包含一个偶数。
  3. 给定数组 arr[] 的总和必须能被给定数组的大小整除。

注意:数组是基于 0 索引的。

例子:

Input : arr = {1, 2, 3, 4, 5, 6, 9, 10} 
Output: "VALID"
Explanation: 
 1.Sum of given array is 40, and size of array is 8
 2.At every even index position array containing odd number
 3.At every odd position index array containing even number

Input : arr = {11, 4, 9, 3, 13}
Output: "INVALID"
Explanation: 
 1.Sum of given array is 40, and size of array is 4
 2.At index 3 it containing an odd value which does not follow given condition
Hence it is invalid.

方法:

  • 遍历给定的数组并检查每个元素是否满足条件。
  • 检查每个索引:
    • 如果索引为奇数,则该索引处的值必须为偶数。
    • 否则,如果索引为偶数,则该索引处的值必须为奇数。
    • 否则打印数组无效并返回。
  • 存储每个给定元素的总和。
  • 最后检查它是否可以与给定的数组大小整除。
  • 如果和是可整除的,则打印“VALID”,否则打印“INVALID”。

下面是上述方法的实现:

Java
// Sum of Array Divisible by Size with Even
// and Odd Numbers at Odd and Even Index 
// in Java
public class Main {
    
    // check whether array is valid or not
    public static String validate(int[] arr)
    {
        // Finding size of given array
        int N = arr.length;
  
        // Store sum of given array
        int s = 0;
  
        // traverse the given array
        for (int i = 0; i < N; i++) {
            // store sum of elements
            s += arr[i];
  
            // if index is even and value is
            // odd, then continue
            if (i % 2 == 0 && arr[i] % 2 == 1)
                continue;
  
            // if index is odd and value is
            // even, then continue
            else if (i % 2 == 1 && arr[i] % 2 == 0)
                continue;
  
            // violeting given condition
            else
                return "INVALID";
        }
  
        // check last condition, sum is
        // divisible by size or not
  
        return s % N == 0 ? "VALID" : "INVALID";
    }
    // Driver Code
    public static void main(String[] args)
    {
  
        int[] arr = { 1, 2, 3, 4, 5, 6, 9, 10 };
        System.out.println(validate(arr));
  
        int[] barr = { 11, 4, 9, 3, 13 };
        System.out.println(validate(barr));
    }
}


输出
VALID
INVALID
  • 时间复杂度: O(N)
  • 空间复杂度: O(1)