find-rotation-point

by mschock

JavaScript

var words = [
      'engender',
      'karpatka',
      'othellolagkage',
      'ptolemaic',
      'retrograde',
      'supplant',
      'undulate',
      'xenoepist',
      'asymptote', // <-- rotates here!
      'babka',
      'banoffee'
  ];

  function doIt(words) {
      var left = 0,
          right = words.length - 1;
      while (left <= right) {
          var midpoint = Math.floor((left + right) / 2),
              currentWord = words[midpoint],
              prevWord = words[midpoint - 1],
              lastWord = words[right];

          if (currentWord < prevWord) {
              return midpoint;
          } else if (currentWord < lastWord) {
              right = midpoint - 1;
          } else {
              left = midpoint + 1;
          }
      }
  }

  console.log(doIt(words));