34. Find First and Last Position of Element in Sorted Array

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

Your algorithm’s runtime complexity must be in the order of O(log n).

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

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]

难度:medium

题目:

给定一升序整数数组,找出给定整数的起止边界。算法时间复杂度要为O(log n)

思路:二叉搜索

Runtime: 4 ms, faster than 65.40% of Java online submissions for Find First and Last Position of Element in Sorted Array.

Memory Usage: 30.5 MB, less than 28.29% of Java online submissions for Find First and Last Position of Element in Sorted Array.

class Solution {
    public int[] searchRange(int[] nums, int target) {
        int[] result = new int[2];
        result[0] = binarySearch(nums, false, target);
        result[1] = binarySearch(nums, true, target);
        
        return result; 
    }
    // false -> left, true -> right
    private int binarySearch(int[] nums, boolean direction, int target) {
        int left = 0, right = nums.length - 1;
        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (nums[mid] == target) {
                if (direction && mid < nums.length - 1 && nums[mid + 1] == target) {
                    left = mid + 1;
                } else if (!direction && mid > 0 && nums[mid - 1] == target) {
                    right = mid - 1;
                } else {
                    return mid;
                }
            } else if (nums[mid] < target) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }
        
        return -1;
    }
}

原文 

https://segmentfault.com/a/1190000018117741

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 34. Find First and Last Position of Element in Sorted Array

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址