题解 | #旋转数组的最小数字#

旋转数组的最小数字

https://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba

class Solution {
public:
    int minNumberInRotateArray(vector<int> rotateArray) {
        int left = 0;
        int right = rotateArray.size() - 1;
        while(left < right){
            int mid = (left + right) / 2;
            //最小的数字在mid右边
            if(rotateArray[mid] > rotateArray[right]) 
                left = mid + 1;
            //无法判断,一个一个试
            else if(rotateArray[mid] == rotateArray[right]) 
                right--;
            //最小数字要么是mid要么在mid左边
            else 
                right = mid;
        }
        // 最终left应该等于right,所在return rotateArray[left] 或 rotateArray[right]都行;
        // return rotateArray[left];
        return rotateArray[right];
    }
};


// class Solution {
// public:
//     /**
//      * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
//      *
//      * 
//      * @param nums int整型vector 
//      * @return int整型
//      */
//     int minNumberInRotateArray(vector<int>& nums) {
//         // write code here
//         // 旋转后数组变成两部分非降序数组
//         // 二分查找

//         // 补充:特殊情况
//         if (nums.size()== 0) {
//             return 0;
//         }

//         int left=0, right=nums.size()-1;

//         while(left<right)
//         {
//             // 找到数组的中点 m
//             int mid = (right+left)>>1;

//             // m在左排序数组中,旋转点在 [mid+1, right] 中
//             if(nums[mid]>nums[right])
//                 left = mid+1;
//             // m 在右排序数组中,旋转点在 [left, mid]中
//             else if(nums[mid]<nums[right])
//                 right = mid;
//             // 缩小范围继续判断
//             else
//                 --right;
//         }

//         return nums[left];
//     }
// };

C++题库 文章被收录于专栏

非淡泊无以明志,非宁静无以致远

全部评论

相关推荐

叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务