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

栏目: Java · 发布时间: 7年前

内容简介: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].

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;
    }
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Perl最佳实践

Perl最佳实践

康韦 / Taiwan公司 / 东南大学出版社 / 2008-3 / 78.00元

《Perl最佳实践》中所有的规则都是为了写出清晰、健壮、高效、可维护和简洁的程序而设计。Conway博士并不自诩这些规则是最广泛和最清晰的实践集,但实际上,《Perl最佳实践》确实提供了在实践中被广泛认可和应用的建议,而不是象牙塔似的编程理论。许多程序员凭直觉来编程,这些直觉来自于他们早期养成的习惯和风格。这样写出的程序似乎自然、直观,而且看起来也很不错。但是,如果你想严肃地对待程序员这份职业,那......一起来看看 《Perl最佳实践》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具