徐玄清的专栏

菜鸡一只

Algorithms—33.Search in Rotated Sorted Array

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

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。中上游,大部分测试情况都是靠系统,考虑不周全。


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/corpsepiges/article/details/46792505
个人分类: leetcode
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

Algorithms—33.Search in Rotated Sorted Array

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭