Problem:

Implement a function nondecreasingSubsequences() that, given a sequence of numbers such as:

[3,6,61,6,7,9,1,7,7,2,7,7,2,388,3,72,7]

… will identify and return each contiguous sub-sequence of non-decreasing numbers. E.g. this example input should return this array-of-arrays.

[[3,6,61],[6,7,9],[1,7,7],[2,7,7],[2,388],[3,72],[7]]

Solution:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function nondecreasing_subsequences(input) {
  var sequences = [];
  var tmp = [];
  var count = 0;

  for (var i = 0; i <= input.length; i++) {
    count++;

    if (input[i] < input[i - 1]) {
      sequences.push(tmp);
      tmp = [];
    } else if (count === input.length + 1) {
      sequences.push(tmp);
      console.log(sequences);
      return;
    }
    tmp.push(input[i]);
  }
};

nondecreasing_subsequences(array);