leetcode 33.搜索旋转排序数组

⭐️ 题目描述


🌟 leetcode链接:搜索旋转排序数组

ps: 本题是二分查找的变形,旋转排序数组之后其实会形成两个有序的区间 。算出平均下标先判断是否与 target 相等,因为这样可以减少代码的冗余。如果前者不成立则使用平均下标元素 midIndex 与 数组最后一个元素判断大小(因为我们可以确定第二个有序区间的最大值,而确定不了第一个有序区间的最大值),若小于则当前 midIndex 就在第二个有序区间中,反之在第一个有序区间。知道在哪个区间后,在判断 target 是否在这个区间中以及 nums[midIndex]target 的大小。

代码:

c 复制代码
int search(int* nums, int numsSize, int target){
    int left = 0;
    int right = numsSize - 1;
    while (left <= right) {
        int midIndex = left + ((right - left) / 2);
        if (nums[midIndex] == target) {
            return midIndex;
        } else if (nums[midIndex] < nums[right]) {
            // 在第二个有序区间
            if (target <= nums[right] && nums[midIndex] < target) {
                left = midIndex + 1;
            } else {
                right = midIndex - 1;
            }
        } else {
            // 第一个有序区间
            if (target >= nums[left] && nums[midIndex] > target) {
                right = midIndex - 1;
            } else {
                left = midIndex + 1;
            }
        }
    }
    return -1;
}

相关推荐
我的xiaodoujiao1 小时前
API 接口自动化测试详细图文教程学习系列16--项目实战演练3
python·学习·测试工具·pytest
复利人生 复利日知录 赋能循环2 小时前
2026年复利精进:我的每日觉醒与成长密码
学习·思维模型·知识复利·复利·独立
sakiko_3 小时前
UIKit学习笔记4-使用UITableView制作滚动视图
笔记·学习·ios·swift·uikit
晓梦林3 小时前
MAZESEC-X1靶场学习笔记
笔记·学习
我的xiaodoujiao4 小时前
API 接口自动化测试详细图文教程学习系列15--项目实战演练2
python·学习·测试工具·pytest
TImCheng06094 小时前
职场人AI学习周期评估:不同学习路径的时间成本
人工智能·学习
周末也要写八哥4 小时前
C4D/Cinema 4D 2026超详细下载与安装教程(附资源包)
学习·数学建模
xinzheng新政4 小时前
openclaw dashboard报错 internal server error
学习
nashane5 小时前
HarmonyOS 6学习:RichEditor宽度“暴力”计算与富文本截图避坑
学习·harmonyos 5
鹿鸣悠悠6 小时前
【AI学习】全链路、并发、响应时间
学习