题解 | #在旋转过的有序数组中寻找目标值#

在旋转过的有序数组中寻找目标值

http://www.nowcoder.com/practice/87c0e7abcbda41e7963660fa7d020995

  1. mid不要错误写成begin
  2. 终止条件 left <=right
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @param target int整型 
     * @return int整型
     */
    int search(vector<int>& nums, int target) {
        // write code here
        if(!nums.size()){
            return -1;
        }

        int begin = 0;
        int end = nums.size()-1;

        while(begin<=end){
            int mid  = (begin+end)/2;

            if(nums[mid] == target){
                return mid;
            }else if(target< nums[mid]){
                if(nums[mid]>nums[begin]){
                    if(target>=nums[begin]){
                        end = mid-1;
                    }else{
                        begin = mid+1;
                    }
                }else if(nums[mid]<nums[begin]){

                    end = mid -1;
                }else{
                    begin = mid+1;
                }

            }else if(target> nums[mid]){
                if(nums[mid]>nums[begin]){
                    begin  = mid+1;
                }else if(nums[mid]<nums[begin]){
                    if(target>=nums[begin]){
                            end = mid-1;
                        }else{
                            begin = mid+1;
                        }
                }else{
                    begin = mid+1;
                }
            }
        }

        return -1;


    }
};
算法解析 文章被收录于专栏

这里主要是算法岗的自我思路总结

全部评论

相关推荐

2024-12-30 22:31
吉首大学 Web前端
工字钢写代码:改成吉林就OK了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务