33. 搜索旋转排序数组

描述:数组nums,值互不相同,在某个下标进行了旋转,将右边部分放到了左边,查看旋转后的数组中是否存在目标值target
思路:找是否存在某个元素,循环条件left<=right,在循环内判断nums[mid]是否等于target
旋转后的数组,使用二分的mid将其分成两部分,找到有序的那部分,判断这部分是否包含target即可每次搜索都排除掉一半元素,left=0,right=len-1,若nums[left]<=nums[mid]则[left, mid]是有序部分,否则[mid, right]是有序部分

81. 搜索旋转排序数组 II

描述:数组nums,值可能重复,在某个下标进行了旋转,将右边部分放到了左边,查看旋转后的数组中是否存在目标值target
思路:找是否存在某个元素,循环条件left<=right,在循环内判断nums[mid]是否等于target
旋转后的数组,使用二分的mid将其分成两部分,找到有序的那部分,判断这部分是否包含target即可每次搜索都排除掉一半元素,left=0,right=len-1
因为有重复,所以当nums[left]等于nums[right]时,left++,不等于时再判断nums[left]<=nums[mid]则[left, mid]是有序部分,否则[mid, right]是有序部分

153. 寻找旋转排序数组中的最小值

描述:数组nums,值互不相同,在某个下标进行了旋转,将右边部分放到了左边,求旋转后的数组中的最小元素
思路:找最小值,循环条件left首先判断数组nums[left]否则,使用二分的mid将其分成两部分,找到有序的那部分,left=0,right=len-1,若nums[left]<=nums[mid]则[left, mid]是有序部分,否则[mid, right]是有序部分;
当[left,mid]有序时,最小值在[mid+1,right]之间,当[mid,right]是有序值时,最小值在[left, mid]之间。