/* * @lc app=leetcode id=34 lang=java * * [34] Find First and Last Position of Element in Sorted Array */ // @lc code=start class Solution { public int[] searchRange(int[] nums, int target) { if(nums==null || nums.length == 0) { return new int[]{-1, -1}; } return new int[] { firstEq(nums, target), lastEq(nums, target) }; } private int firstEq(int[] nums, int target) { int l = 0, r = nums.length-1, m, v=-1; while(l <= r) { m = l + (r-l)/2; if(nums[m] < target) { l = m + 1; } else if(nums[m] > target) { r = m - 1; } else { v = m; r = m-1; } } return v; } private int lastEq(int[] nums, int target) { int l = 0, r = nums.length-1, m, v=-1; while(l<=r) { m = l + (r-l)/2; if(nums[m] > target) { r = m - 1; } else if(nums[m] < target) { l = m + 1; } else { v = m; l = m + 1; } } return v; } } // @lc code=end