How do I find a maximum number of consecutive non-zero values in the array?

This is my attempt on that: :innocent:

/**
 * Max Number of Consecutive Non-Zero Values (v1.0.1)
 * GoToLoop (2021/Apr/08)
 *
 * https://Discourse.Processing.org/t/
 * how-do-i-find-a-maximum-number-of-
 * consecutive-non-zero-values-in-the-array/29200/8
 */

final int[] vals = {
  0, // 0
  MAX_INT, MIN_INT, 0, // 2
  -1, 3, 40, 100, 0, // 4
  5 // 1
};

void setup() {
  println(str(vals));
  println(maxSeqNonZero(vals)); // 4
  exit();
}

@SafeVarargs static final int maxSeqNonZero(final int... arr) {
  if (arr == null || arr.length == 0)  return 0;

  int seqCount = 0, maxCount = 0;

  for (final int n : arr)
    maxCount = max(maxCount, seqCount += n != 0? 1 : -seqCount);

  return maxCount;
}
2 Likes