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));