zoukankan      html  css  js  c++  java
  • 旋转有序数组

    题目描述
    给出一个转动过的有序数组,你事先不知道该数组转动了多少
    (例如,0 1 2 4 5 6 7可能变为4 5 6 7 0 1 2).
    在数组中搜索给出的目标值,如果能在数组中找到,返回它的索引,否则返回-1。
    假设数组中不存在重复项。

    示例1
    输入
    复制
    [1],0
    返回值
    复制
    -1
    示例2

    class Solution {
    public:
        /**
         * 
         * @param A int整型一维数组 
         * @param n int A数组长度
         * @param target int整型 
         * @return int整型
         */
        int search(int* A, int n, int target) {
            // write code here
            int l=0,r = n-1,mid = 0;
            while (l<=r ) {
                mid = l+(r-l)/2;
                if (A[mid] == target) return mid;
                else if (A[mid]>=A[l]) {
                    //mid >=l, 左侧一定有序
                    if(A[l]<=target && A[mid]>target) r = mid-1;
                    else l = mid+1;
                    
                }else{
                    //右侧一定有序
                    if (A[r]>=target && A[mid]<target) l = mid+1;
                    else r = mid-1;
                    
                }
            }
            if(A[mid ]== target) return mid;
            return -1;
        }
    };
    
    
  • 相关阅读:
    HTML_from
    HTML_img
    python_Django默认转换器
    python_虚拟环境
    python_正则表达式
    mysql_pymysql模块
    mysql_权限管理
    mysql_子查询
    sudo权限造成的故障
    22.Linux定时任务
  • 原文地址:https://www.cnblogs.com/lyr-2000/p/14070375.html
Copyright © 2011-2022 走看看