您的位置:首页 > 其它

[leetCode刷题笔记]2017.02.06

2017-02-07 12:26 344 查看
33. Search in Rotated Sorted Array

这道题其实就是考察二分法,虽然旋转了,但是大部分没变化。。。先找两个点,起始和终止点。然后如果中间点比起始点小,说明其中存在旋转点。要根据targer位置进行二分。。

public class Solution {

    public int search(int[] nums, int target) {

        if (nums == null || nums.length == 0) {

            return -1;

        }

        int start = 0;

        int end = nums.length - 1;

        int mid;

        while (start < end -1) {

            mid = start + (end - start) / 2;

            if (nums[mid] == target) {

                return mid;

            }

            if (nums[start] < nums[mid]) {

                if (nums[start] <= target && target <= nums[mid]) {

                    end = mid;

                }

                else {

                    start = mid;

                }

            }

            else {

                if (nums[mid] <= target && target <= nums[end]) {

                    start = mid;

                } else {

                    end = mid;

                }

            }

        }

        if (nums[start] == target) {

            return start;

        }

        if (nums[end] == target) {

            return end;

        }

        return -1;

    }

}

好困。。。就写到这。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: