2023-12-19 20:27阅读: 3评论: 0推荐: 0

[LeetCode Hot 100] LeetCode34.在排序数组中查找元素的第一个和最后一个位置

题目描述

思路:

二分查找之寻找左右侧边界
两个关键点:1. 数组有序;2. 时间复杂度O(log n)

方法一:

class Solution {
    public int[] searchRange(int[] nums, int target) {
        if (nums.length == 0 || nums == null) {
            return new int[]{-1, -1};
        }
        int leftBound = -1;
        // 寻找最左边界
        int left = 0, right = nums.length - 1;
        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (target == nums[mid]) {
                if (mid == 0 || nums[mid - 1] != target) {
                    leftBound = mid;
                    break;
                } else {
                    right = mid - 1;
                }
            } else if (target < nums[mid]) {
                right = mid - 1;
            } else if (target > nums[mid]) {
                left = mid + 1;
            }
        }
		// 说明没有找到左边界,此时直接返回[-1, -1]
        if (leftBound == -1) {
            return new int[]{-1, -1};
        }
		// 开始寻找右边界
        left = 0;
        right = nums.length - 1;
        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (target == nums[mid]) {
               if (mid == nums.length - 1 || nums[mid + 1] != target) {
                   return new int[]{leftBound, mid};
               } else {
                   left = mid + 1;
               }
            } else if (target < nums[mid]) {
               right = mid - 1;

            } else if (target > nums[mid]) {
                left = mid + 1;
            }
        }
        return new int[]{-1, -1};
    }
}

本文作者:keyongkang

本文链接:https://www.cnblogs.com/keyongkang/p/17914662.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Ac_c0mpany丶  阅读(3)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 You Are My Sunshine REOL
You Are My Sunshine - REOL
00:00 / 00:00
An audio error has occurred.

作曲 : Traditional

You are my sunshine

My only sunshine.

You make me happy

When skies are gray.

You'll never know, dear,

How much I love you.

Please don't take my sunshine away

The other night, dear,

When I lay sleeping

I dreamed I held you in my arms.

When I awoke, dear,

I was mistaken

So I hung my head and cried.

You are my sunshine,

My only sunshine.

You make me happy

When skies are gray.

You'll never know, dear,

How much I love you.

Please don't take my sunshine away.

You are my sunshine,

My only sunshine

You make me happy

When skies are gray.

You'll never know, dear

How much I love you

Please don't take my sunshine away

Please don't take my sunshine away.

Please don't take my sunshine away.