Thursday, October 20, 2016

[Java][Answer] CodingBat Array-2 > modThree()

Given an array of ints, return true if the array contains either 3 even or 3 odd values all next to each other.

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

Answer 1:
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;
}

Answer 2:
public boolean modThree(int[] nums) {
  int odd = 0;
  int even = 0;
 
  for (int i = 0; i < nums.length; i++) {
    if (nums[i] % 2 == 0) {
      even++;
      if (odd < 3) odd = 0;
    }
    else {
      odd++;
      if (even < 3) even = 0;
    }
  }
  return (odd == 3 || even == 3);
}
Reference
http://www.javaproblems.com/2013/11/java-array-2-modthree-codingbat-solution.html

No comments :

Post a Comment