33. 搜刮旋转排序数组

源码 2024-9-26 13:34:54 106 0 来自 中国
33. 搜刮旋转排序数组

标题链接:https://leetcode-cn.com/problems/search-in-rotated-sorted-array/
难度:中等
假设按照升序排序的数组在预先未知的某个点上举行了旋转。
( 比方,数组 [0,1,2,4,5,6,7] 大概变为 [4,5,6,7,0,1,2] )。
搜刮一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。
你可以假设数组中不存在重复的元素。
你的
示例 1:
输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4示例 2:
输入: nums = [4,5,6,7,0,1,2], target = 3输出: -1解法一:二分查找法

算法思绪:

望见标题要求算法时间复杂度必须是 O(log n) 级别,那么一定会想到二分查找法
起首二分查找法,只能在有序的数组内进使用用,怎样在这道题中得到有序的数组呢?
不妨,其着实这数组内里,任意一个节点把数组分成两部门,此中的有一部门一定是有序的,那么我们就用二分查找法中的mid节点举行切分,若那部门是有序的,我们再在有序的部门举行二分查找,直到出现效果。
怎样判定那一部门是有序的?
实在很简单,我们只必要判定nums[0] <= nums[mid],分析前半部门有序,否则后半部门有序。
代码:
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-22 00:33, Processed in 0.140106 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表