首页 > 解决方案 > 检测数组中的3个连续奇数或偶数

问题描述

当我在编码 bat 上练习Java问题时,我遇到了以下问题陈述:-

问题:-

给定一个整数数组,如果该数组包含 3 个相邻的偶数或 3 个奇数,则返回 true。

例子:-

modThree([2, 1, 3, 5]) → true
modThree([2, 1, 2, 5]) → false
modThree([2, 4, 2, 5]) → true

我的解决方案:-

public boolean modThree(int[] nums) {
  for(int i=0; i<nums.length-2; i++){
    if((nums[i] % 2 == 0 && nums[i+1] % 2 == 0 && nums[i+2] % 2 == 0) || (nums[i] % 2 == 1 && nums[i+1] % 2 == 1 && nums[i+2] % 2 == 1)){
      return true;
    }
  }
    return false;
}

虽然我的解决方案有效,但我的解决方案看起来有点长(尤其是 if 语句条件)。所以,我正在寻找一种代码行数更少的解决方案。你能帮我解决这个问题吗?

标签: javaif-statement

解决方案


这三个modulo值必须相等,不一定是 0 或 1(尽管% 2使 0 和 1 成为唯一可能的结果)。因此,您可以将if语句替换为:

if(nums[i]%2 == nums[i+1]%2 && nums[i]%2 == nums[i+2]%2) {
    ...
}

推荐阅读