Algorithms—33.Search in Rotated Sorted Array

原创 2015年07月07日 17:56:31

思路:没什么好的思路,分各种情况讨论。

public class Solution {
    public int search(int[] nums, int target) {
		if (nums.length==1) {
			if (nums[0]==target) {
				return 0;
			}else {
				return -1;
			}
		}
		int begin=0;
		int end=nums.length-1;
		int half=(end+begin)/2;
		while (end-begin>1) {
			int b=nums[begin];
			int h=nums[half];
			int e=nums[end];
			if (h==target) {
				return half;
			}
			if (b==target) {
				return begin;
			}
			if (e==target) {
				return end;
			}
			if (h>b) {
				if (target>h) {
					begin=half;
					half=(end+begin)/2;
				}else {
					if (target>b) {
						end=half;
						half=(end+begin)/2;
					}else {
						begin=half;
						half=(end+begin)/2;
					}
				}
			}else {
				if (target<h) {
					end=half;
					half=(end+begin)/2;
				}else {
					if (target>e) {
						end=half;
						half=(end+begin)/2;
					}else {
						begin=half;
						half=(end+begin)/2;
					}
				}
			}
		}
		if (nums[begin]==target) {
			return begin;
		}
		if (nums[end]==target) {
			return end;
		}

		return -1;
	}
}


耗时:316ms。中上游,大部分测试情况都是靠系统,考虑不周全。


版权声明:本文为博主原创文章,未经博主允许不得转载。

Rotated Sorted Array(旋转数组总结)

首先什么叫旋转数组,把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转。对于这样的数组,我们可以画一下的一个图来表示。 ...
  • willduan1
  • willduan1
  • 2016年12月17日 09:50
  • 4721

leetCode 33.Search in Rotated Sorted Array(排序旋转数组的查找) 解题思路和方法

Search in Rotated Sorted Array Suppose a sorted array is rotated at some pivot unknown to you befo...
  • xygy8860
  • xygy8860
  • 2015年07月08日 17:36
  • 634

HDU 5532 Almost Sorted Array(最长非递减子序列 模板题)——2015ACM/ICPC亚洲区长春站

HDU 5532 Almost Sorted Array(最长非递减子序列 模板题)——2015ACM/ICPC亚洲区长春站
  • queuelovestack
  • queuelovestack
  • 2015年11月01日 18:42
  • 1097

循环有序数组中的二分查找 Search in a rotated sorted array

二分查找是必须要掌握的技能。二分查找适用于有序的、顺序的存储结构。 1、可以用它来查找某一个数 2、可以用于查找某一个范围。如《二分查找有序数组中某个数的所在范围 Search for a Rang...
  • luckyjoy521
  • luckyjoy521
  • 2013年12月22日 19:16
  • 2132

第三周算法分析与设计:Search in Rotated Sorted Array

算法描述: Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehan...
  • qq_20353557
  • qq_20353557
  • 2017年03月09日 22:32
  • 90

Leetcode全数组问题

目录 1、编号2 Median of Two Sorted Arrays There are two sorted arrays A and B of size m and n respe...
  • wangxiaojun911
  • wangxiaojun911
  • 2014年02月06日 03:32
  • 6380

java数组——数组排序sort()

例子: //  排列数组 sort   int[] array = new int[]{1,4,6,8,3};   Arrays.sort(array);   for(int e:array)...
  • werewofe
  • werewofe
  • 2014年01月03日 11:16
  • 783

Rotated Array 旋转数组的解题报告--leetcode

Rotated Array即旋转数组的定义是:将一个有序数组的某个位置k之后的子数组移动到数组前面,是原数组的前半部分和后半部分都是有序的。例如:0,1,2,3,4,5,6,取k=4,则旋转之后的数组...
  • y999666
  • y999666
  • 2016年08月28日 10:56
  • 322

Leetcode解题笔记(Array)

源码见github https://github.com/Kelvinmao/Leetcode/tree/master/Array 2016-08-08更新154.Find Minimum in Ro...
  • kelvinmao
  • kelvinmao
  • 2016年07月23日 22:38
  • 1587

Merge Sorted Array——算法练习

Merge two given sorted integer array A and B into a new sorted integer array. (合并两个排好序的数组) 样例 ...
  • lxf_44944
  • lxf_44944
  • 2015年02月13日 14:59
  • 892
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Algorithms—33.Search in Rotated Sorted Array
举报原因:
原因补充:

(最多只允许输入30个字)