zoukankan      html  css  js  c++  java
  • 面试题8 旋转数组的最小数字

    题目描述

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减序列的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
     
     1 class Solution {
     2 public:
     3     int findmin(vector<int> rotateArray) {
     4         int min = rotateArray[0];
     5         for (int i = 1; i < rotateArray.size(); i++) {
     6             if (min > rotateArray[i])
     7                 min = rotateArray[i];
     8         }
     9         return min;
    10     }
    11 
    12     int minNumberInRotateArray(vector<int> rotateArray) {
    13         if (rotateArray.size() == 0)
    14             return 0;
    15         int i = 0, j = rotateArray.size() - 1, mid = i;
    16         while (rotateArray[j] <= rotateArray[i]) {
    17             if (j - i == 1){
    18                 mid = j;
    19                 break;
    20             }
    21             mid = (i + j) / 2;
    22             if (rotateArray[i] == rotateArray[j] && rotateArray[i] == rotateArray[mid])
    23                 return findmin(rotateArray);
    24             if (rotateArray[mid] >= rotateArray[i])
    25                 i = mid;
    26             else if (rotateArray[mid] <= rotateArray[j])
    27                 j = mid;
    28         }
    29         return rotateArray[mid];
    30     }
    31 };
  • 相关阅读:
    02 序列模型问题
    02 序列模型问题
    04 电路交换
    31 路由算法.md
    NumPy入门教程
    有穷自动机
    上下文无关语法
    基本乐理
    正则表达式
    【OpenCV入门教程之七】 玩转OpenCV源代码:生成OpenCV工程解决方案与OpenCV源码编译(转)
  • 原文地址:https://www.cnblogs.com/wanderingzj/p/5352221.html
Copyright © 2011-2022 走看看