leetCode 33.Search in Rotated Sorted Array(排序旋转数组的查找) 解题思路和方法
来源:互联网 发布:洋洋妆园淘宝真假啊 编辑:程序博客网 时间:2024/05/22 12:23
Search in Rotated Sorted Array
(i.e., 0 1 2 4 5 6 7 might become 4 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.
思路:此题算法上不难,第一步计算旋转的步长。然后根据步长分情况得到升序的新的数组。然后二分查找target的索引,找到后再分情况返回元素的位置。
具体代码如下:
public class Solution { public int search(int[] nums, int target) { if(nums.length == 0){ return -1; } if(nums.length == 1){ if(nums[0] == target) return 0; return -1; } int rotate = 0;//旋转的步长 for(int i = nums.length - 1; i > 0; i--){ if(nums[i] < nums[i-1]){ rotate = i; break; } } int[] a = new int[nums.length]; //将数组按升序填充到新数组 for(int i = rotate; i < nums.length; i++){ a[i - rotate] = nums[i];//后面未旋转部分 } for(int i = 0; i < rotate; i++){ a[i+nums.length-rotate] = nums[i];//前面旋转部分 } int index = -1; //二分查找 int low = 0; int hight = nums.length - 1; while(low <= hight){ int mid = (low + hight)/2; if(a[mid] > target){ hight = mid - 1; }else if(a[mid] == target){ index = mid; break; }else{ low = mid + 1; } } if(index == -1) return -1; if(index + rotate > nums.length - 1) return index + rotate - nums.length; return index + rotate; }}
后续:这一题实在解的有些多余了,最简单的就是一次遍历,找到返回index,找不到返回-1.
代码如下:
public class Solution { public int search(int[] nums, int target) { for(int i = 0; i < nums.length; i++){ if(nums[i] == target){ return i; } } return -1; }}
0 0
- leetCode 33.Search in Rotated Sorted Array(排序旋转数组的查找) 解题思路和方法
- leetCode 81.Search in Rotated Sorted Array II (旋转数组的搜索II) 解题思路和方法
- LeetCode @ Search in Rotated Sorted Array 旋转数组查找
- Search in Rotated Sorted Array-旋转数组的查找
- Leetcode #33. Search in Rotated Sorted Array 旋转数组查询 解题报告
- 查找已排序的旋转后的数组中的数(Search in Rotated Sorted Array)
- LeetCode Search in Rotated Sorted Array 在旋转了的数组中查找
- Leetcode--Search in Rotated Sorted Array(旋转数组的查找)
- 【LeetCode刷题】旋转数组的查找 Search in Rotated Sorted Array
- LeetCode------33. Search in Rotated Sorted Array(旋转数组中查找)
- leetcode 刷题之路 35 Search in Rotated Sorted Array II (旋转排序数组查找终极版)
- Leetcode 81. Search in Rotated Sorted Array II 旋转数组查询2 解题报告
- 33. Search in Rotated Sorted Array 旋转排序数组极值的二分求法
- 【LeetCode】Search in Rotated Sorted Array旋转数组问题总结
- [LintCode] 搜索旋转排序数组 Search in Rotated Sorted Array
- Search in Rotated Sorted Array 旋转数组里查找数 @LeetCode
- LeetCode | Search in Rotated Sorted Array(在旋转数组中查找)
- leetcode 81. Search in Rotated Sorted Array II-旋转数组|二分查找
- Mysql最简单的复制环境部署方法
- OC-继承-初始化方法-便利构造器(练习题-打僵尸)
- JAVA将以二进制形式存储在Access数据库中的图片提取出来
- Android 实现跑马灯显示数条标题
- 第三方开源库 AFNetworking
- leetCode 33.Search in Rotated Sorted Array(排序旋转数组的查找) 解题思路和方法
- android 4.4 添加物理按键
- Tools - John The Ripper
- 图标收藏
- sqlmap使用笔记
- SPRING+JUNIT单元测试s
- hadoop一些基本知识——Hadoop reducer类的阅读
- 算法之二叉树各种遍历
- uitextfield 设置左图标以及图标文字间距,输入框背景图切换