Java中奇数和偶数索引处可被大小整除的数组的总和
给定一个大小为N的数组arr[] ,将给定数组转换为数组中偶数出现在奇数索引处,数组中奇数出现在偶数索引处,以及数组中数字之和是否可被整除数组的大小。如果数组遵循所有属性,则数组有效,否则无效。
如果数组符合所有给定的三个条件,则该数组将是有效的:
- 在给定的数组 arr[] 中,在每个偶数索引位置,它必须包含一个奇数。
- 在给定的数组 arr[] 中,在每个奇数索引位置,它必须包含一个偶数。
- 给定数组 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)