33. Search in Rotated Sorted Array && 81. Search in Rotated Sorted Array II
来源:互联网 发布:淘宝1块包邮的有什么 编辑:程序博客网 时间:2024/06/06 01:51
题目:
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7
might become4 5 6 7 0 1 2
).
You are given a target value to search. If found in the array return its index, otherwise return -1.
You may assume no duplicate exists in the array.
这道题目我认为不是很严密,因为他没有要求时间限制,那么只要顺序遍历不管这个数组的顺序如何都不会影响结果,只不过时间复杂度比较高,因为做习惯了时间复杂度有要求的,一开始就没有尝试这种,后来好奇试了一下居然也AC了==。。。但是还是要从每一道题目做出一点有意义有趣的事的~一般来说,对应有序序列的搜索,二分法是效率比较高的搜索方法。但是这道题目因为经过了一次轴旋转,所以并不是全部都满足有序序列。
参考别人的思路:点击打开链接
这种思路可以让二分法适用于这种非有序序列:首先判断是一个序列是有序序列:如果是有序序列,那么nums[left]<nums[right]。将初始序列一分为二,必然有一半是有序的,最开始的时候left指向index=0,right指向index=-1(最后一个元素),每个循环中都找有序的那一半,将target和那一半的边界进行比较就可以得到是否在那个序列中了。每次都在有序序列中进行判断,就可以尽可能的用到二分法的效果。
public class Solution { public int search(int[] nums, int target) { int min = 0, max = nums.length - 1, mid = 0; while(min <= max){ mid = (min + max) / 2; if(nums[mid] == target){ return mid; } // 如果左半部分是有序的 注意这里的等号 if(nums[min] <= nums[mid]){ if(nums[min] <= target && target < nums[mid]){//注意这里的等号 max = mid - 1; } else { min = mid + 1; } // 如果右半部份是有序的 } else { if(nums[mid] < target && target <= nums[max]){ min = mid + 1; } else { max = mid - 1; } } } // 不满足min <= max条件时,返回-1 return -1; }}
阅读全文
0 0
- 81.Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 厉害了黑科技,动态安全下的防拖库原来可以这么简单!
- 为什么看了她,会想做农活
- 单位用户两年免费延保
- NOIP2017提高组 模拟赛 27(总结)
- Jfilter统一编码工具类
- 33. Search in Rotated Sorted Array && 81. Search in Rotated Sorted Array II
- MVC框架
- Building Blocks
- 优化:4数平方和之积转换为2数平方之和
- Number Complement(leetcode)
- 邮件发送工具类
- 几种简单的文本数据预处理方法
- 基于Threejs的web 3D开发入门
- 二叉树的前序,中序,后序遍历