У давні часи, коли зимовий вітер пробивався крізь старі вулиці Києва, немов нагадуючи про часи, коли тут жили люди з теплими серцями, стояла біля крамниці стара жінка. Її обличчя було вкрите мереживом зморшок, кожна з яких розповідала історію страждання, терпіння та втрачених надій. У руках вона тримала потерту торбинку з порожніми пляшками останніми уривками минулого життя.
Доню, молю тебе, прошепотіла вона, і голос її тремтів, як листок на вітрі. Три дні вже не їла я навіть шматочка хліба. Не лишилось у мене жодної копійки
Слова зависли в повітрі, але за склом крамниці продавщиця лише холодно похитала головою.
Ну і що? відповіла вона з дражливою байдужістю. Це пекарня, а не пункт прийому склотари. Напис чіткий: пляшки здають окремо, там і гроші дадуть на хліб, на їжу, на життя. Що ж я для тебе вдію?
Стара збентежилась. Вона не знала, що пункт зачиняється опівдні. А тепер було вже пізно. Пізно на ту крихту надії, що могла б врятувати її від голоду. Колись вона навіть подумати не могла про збір пляшок. Вона була вчителькою, жінкою з гарною освітою, з гідністю, якої не втратила навіть у найтяжчі дні. А тепер тепер вона стояла тут, немов жебрачка.
Ну добре продавщиця трохи помякшила тон. Менше спи. Завтра, якщо принесеш пляшки рано, приходь дам тобі поїсти.
Донечко благала жінка. Дайте хоть четвертинку буханця Завтра віддам. Погано мені Не витримаю цього голоду.
Але в очах продавщиці не було і іскри співчуття.
Ні, різко відрізала вона. Не благодійність тут. Сама ледве кінці з кінцями зводжу. Щодня юрби приходять, не всіх же годувати. Не заважай, черга стоїть.
Краєм ока вона помітила чоловіка в темному пальті, зануреного у власні думки. Вмить її тон змінився, ніби перед нею зявився не зви## 思路
– 使用两次二分查找,第一次查找出现的起始位置,第二次查找出现的结束位置
– 起始位置:找到第一个等于target的位置当`nums[mid]`等于target时,需要继续往左寻找,所以将`high = mid`
– 结束位置:找到第一个大于target的位置,然后减1当`nums[mid]`等于target时,需要继续往右寻找,所以将`low = mid + 1`
“`java
class Solution {
public int[] searchRange(int[] nums, int target) {
int[] ans = new int[]{-1,-1};
if(nums==null || nums.length==0){
return ans;
}
int low = 0;
int high = nums.length – 1;
while(low < high){
int mid = low + (high - low)/2;
if(nums[mid] < target){
low = mid + 1;
}else{
high = mid;
}
}
if(nums[low] != target){
return ans;
}
ans[0] = low;
high = nums.length - 1;
while(low < high){
int mid = low + (high - low)/2 + 1;
if(nums[mid] > target){
high = mid – 1;
}else{
low = mid;
}
}
ans[1] = high;
return ans;
}
}
“`



