思路:

本题是一个经典的二分查找问题,但是数组是旋转过的,所以需要先判断哪一部分是有序的,再根据target和有序部分的边界值来判断target在哪个部分,最后进行二分查找。

步骤如下:

  1. 定义左右指针l和r,初始化为数组的左右边界;

  2. 进行二分查找,找到中间位置mid;

  3. 判断mid左边的部分和右边的部分哪部分是有序的,即nums[mid]和nums[l]、nums[r]的大小关系;

  4. 根据target和有序部分的边界值判断target在哪个部分;

  5. 在有序部分中进行二分查找,找到target的下标。

代码如下:

python实现整数数组 nums 按升序排列数组中的值 互不相同 。在传递给函数之前nums 在预先未知的某个下标 k0 = k numslength上进行了 旋转使数组变为 numsk numsk+1 numsn-1 nums0 nums1 numsk-1下标 从 0 开始 计数。例如 0124567 在下标 3 处经旋转后可能变为 4567012 。给你 旋转后 的数组 nums 和一

原文地址: https://www.cveoy.top/t/topic/fqaq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录