• Search in Rotated Sorted Array


    Suppose a sorted array is rotated at some pivot unknown to you beforehand.

    (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

    You are given a target value to search. If found in the array return its index, otherwise return -1.

    You may assume no duplicate exists in the array.

    Subscribe to see which companies asked this question

    1.做了下标映射

    class Solution {
    public:
        
        int binary_search(vector<int> &nums, int target) {
            int l = 0;
            int r = nums.size() -1;
            while (l<=r) {
                int mid = l + ((r - l) >> 1);
                if (nums[mid] == target) {
                    return mid;
                } else if (nums[mid] < target) {
                    l = mid + 1;
                } else {
                    r = mid - 1;
                }
            }
            return -1;
        }
        int search(vector<int>& nums, int target) {
            //映射
            int i = 0;
            vector<int> tmp_nums;
            vector<int> tmp_index;
            int j = 0;
            for (i=0; i<nums.size() -1 ; i++) {
                if (nums[i+1] < nums[i]) {
                    break;
                }
            }
            
            for (j=i+1; j<nums.size(); j++) {
                tmp_nums.push_back(nums[j]);
                tmp_index.push_back(j);
            }
            
            for (j=0; j<=i; j++) {
                tmp_nums.push_back(nums[j]);
                tmp_index.push_back(j);
            }
            
            int k = binary_search(tmp_nums, target);
            if (k != -1) {
                return tmp_index[k];
            } else {
                return -1;
            }
        }
    };
  • 相关阅读:
    1. 两数之和
    RabbitMQ主题交换机
    RabbitMQ路由
    RabbitMQ发布订阅
    RabbitMQ简介和安装
    55. 跳跃游戏
    63. 不同路径 II
    62. 不同路径
    6. Z 字形变换
    sql注入攻击与防御第一章(笔记)
  • 原文地址:https://www.cnblogs.com/SpeakSoftlyLove/p/5184339.html
Copyright © 2020-2023  润新知