关闭

Algorithms—33.Search in Rotated Sorted Array

118人阅读 评论(0) 收藏 举报
分类:

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

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


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:62480次
    • 积分:3002
    • 等级:
    • 排名:第11616名
    • 原创:247篇
    • 转载:3篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论