Leetcode #34 | #Medium | [[Бин. поиск]] ## Идея Просто два фирменных бин. поиска. Для первого прохода инваринт, что правый указатель >= элемента (тогда он попадет на его первое вхождение). Для второго прохода инвариант, что правый указатель > элемента (тогда левый укажет на последнее вхождение) ## [[Big-O]] - Время ```O(logN)``` - Память ```O(1)``` ## Код ```Java class Solution { public int[] searchRange(int[] nums, int target) { if (nums.length == 0) { return new int[]{-1, -1}; } int[] res = new int[2]; int l = -1; int r = nums.length; while (r-l > 1) { int m = (r+l)/2; if (nums[m] >= target) { r = m; } else { l = m; } } if (r >= nums.length || nums[r] != target) { return new int[]{-1, -1}; } res[0] = r; l = -1; r = nums.length; while (r-l > 1) { int m = (r+l)/2; if (nums[m] <= target) { l = m; } else { r = m; } } res[1] = l; return res; } } ```