Find First and Last Position of Element in Sorted Array in Java

  • Home /
  • Blog Posts /
  • Find First and Last Position of Element in Sorted Array in Java

The challenge

Given an array of integers nums sorted in ascending order, find the starting and ending position of a given target value.

If target is not found in the array, return [-1, -1].

Follow up: Could you write an algorithm with O(log n) runtime complexity?

Example 1:

Input: nums = [5,7,7,8,8,10], target = 8
Output: [3,4]

Example 2:

Input: nums = [5,7,7,8,8,10], target = 6
Output: [-1,-1]

Example 3:

Input: nums = [], target = 0
Output: [-1,-1]

Constraints:

  • 0 <= nums.length <= 10<sup>5</sup>
  • -10<sup>9</sup>&nbsp;<= nums[i]&nbsp;<= 10<sup>9</sup>
  • nums is a non-decreasing array.
  • -10<sup>9</sup>&nbsp;<= target&nbsp;<= 10<sup>9</sup>

The solution in Java code

class Solution {
    public int[] searchRange(int[] nums, int target) {
        int first = -1, last = -1;
        
        for (int i=0; i<nums.length; i++) {
            if (nums[i]==target) first = i;
            continue;
        }
        
        for (int i=nums.length-1; i>=0; i--) {
            if (nums[i]==target) last = i;
            continue;
        }
        
        return new int[] {last, first};
    }
}