搜索旋转排序数组「变题」

本篇文章仅汇总该系列的变题!!!关于搜索旋转排序数组的原理可见 浅析:搜索旋转排序数组

变题一:无重复元素寻找目标值

题目详情可见 搜索旋转排序数组

变题二:有重复元素寻找目标值

题目详情可见 搜索旋转排序数组 II

变题三:无重复元素寻找最小值

题目详情可见 寻找旋转排序数组中的最小值

变题四:有重复元素寻找最小值

题目详情可见 寻找旋转排序数组中的最小值 II

变题五:没有找到返回大于目标值的最小值

该变题是在 搜索旋转排序数组 的基础上进行修改滴!!

🌰 举个例子:nums = [6, 7, 9, 0, 2, 4, 5], target = 8,该样例应该返回9

用变题一中的写法一可以做到部分样例可以正确返回,但有些样例返回错误,如:nums = [6, 7, 9, 0, 2, 4, 5], target = 3,错误返回5,应该返回4

这里提供一种曲线救国的方法:先找到最小值,如:变题四、变题五;然后分两段找

变题六:旋转两次

旋转一次和旋转两次是一样的,都会把一个数组分成两段递增序列

🌰 举个例子:nums = [1, 2, 3, 4, 5, 6]

先旋转一次后:nums = [3, 4, 5, 6, 1, 2]

再旋转一次后:nums = [5, 6, 1, 2, 3, 4]

变题七:手动实现旋转数组