I am trying to solve some algorithmic questions and i come across some solutions where people are using while loops in different manner: Like in case of some problem like binary search based problems
Someone use while(left <= right) and someone uses while(left < right ). But what's the difference and how do i know what to use when ?
var nextGreatestLetter = function(letters, target) {
let left = 0;
let right = letters.length ;
while (left < right) {
let mid = (left + right) >> 1;
if (letters[mid] > target) {
right = mid;
} else {
left = mid + 1;
}
}
return letters[left % letters.length];
}; // Working Solution
var nextGreatestLetter = function(letters, target) {
let left = 0;
let right = letters.length -1 ;
while (left <= right) {
let mid = (left + right) >> 1;
if (letters[mid] > target) {
right = mid;
} else {
left = mid + 1;
}
}
return letters[left % letters.length];
}; //TLE
How are they working differently and how do i know which loop condition and array length i should choose.