【Leecode】Leecode刷题之路第81天之搜索旋转排序数组II

Scroll Down

题目出处

81-搜索旋转排序数组 II-题目出处

题目描述

81-搜索旋转排序数组II-题目描述

个人解法

思路:

todo

代码示例:(Java)

todo

复杂度分析

todo

官方解法

81-搜索旋转排序数组 II-官方解法

前言

本篇题解基于33. 搜索旋转排序数组的官方题解,请读者在阅读完该题解后再继续阅读本篇题解。

方法1:二分查找

思路:

81-搜索旋转排序数组II-二分查找-思路

代码示例:(Java)

public class Solution1 {
    public boolean search(int[] nums, int target) {
        int n = nums.length;
        if (n == 0) {
            return false;
        }
        if (n == 1) {
            return nums[0] == target;
        }
        int l = 0, r = n - 1;
        while (l <= r) {
            int mid = (l + r) / 2;
            if (nums[mid] == target) {
                return true;
            }
            if (nums[l] == nums[mid] && nums[mid] == nums[r]) {
                ++l;
                --r;
            } else if (nums[l] <= nums[mid]) {
                if (nums[l] <= target && target < nums[mid]) {
                    r = mid - 1;
                } else {
                    l = mid + 1;
                }
            } else {
                if (nums[mid] < target && target <= nums[n - 1]) {
                    l = mid + 1;
                } else {
                    r = mid - 1;
                }
            }
        }
        return false;
    }


}

复杂度分析

81-搜索旋转排序数组II-二分查找-复杂度分析

考察知识点

收获

Gitee源码位置

81-搜索旋转排序数组II-源码

同名文章,已同步发表于CSDN,个人网站,公众号