One of my favorite algorithms.
public static Integer search(List<Opportunity> opportunities, Integer target){
Integer first = 0;
Integer last = opportunities.size()-1;
while (first <= last) {
Integer middle = first + (last - first) / 2;
if (target == opportunities[middle].Amount)
return middle;
else if (target < opportunities[middle].Amount)
last = middle - 1;
else
first = middle + 1;
}
return -1;
}
Have a question, what if multiple opportunities have similar amount?
How does the code modification look for this case?