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 };
  • 相关阅读:
    2981 大整数加法
    1160 矩阵的最大值(指针专题)
    1159 最大的两个数(指针专题)
    1127 矩阵乘积
    1126 布尔矩阵的奇偶性
    1125 上三角矩阵的判断
    1124 两个有序数组合并
    1123 最佳校友
    1122 小明的调查作业
    1121 电梯
  • 原文地址:https://www.cnblogs.com/wanderingzj/p/5352221.html
Copyright © 2011-2022 走看看