Skip to main content
  1. Posts/

求旋转数组最小值(二分)

·1 min
Note: This article is available in Chinese only. 本文暂无英文版本。 View original

题意:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。

思路:二分。。。注意有重复元素。。。

 1class Solution {
 2public:
 3    int minNumberInRotateArray(vector<int> a) {
 4        int siz = a.size();
 5        int l = 0 ;
 6        int r = siz-1;
 7        while (r-l>1)
 8        {
 9            int mid = (l+r)>>1;
10            if (a[mid]>a[r]) l = mid;
11            else   r = mid;
12
13        }
14        return min(a[l],a[r]);
15
16    }
17};

Related

用两个栈实现队列

·1 min
思路: 一个元素入队的时候直接插入到stack1中。。。 一个元素出队的时候。。。如果stack2不为空。。stack2顶的元素就是要出队的。。

阿里一面.

·3 mins
一开始是晚上七点半,直接一个电话过来就开始面试》。。 窝说不方便,又约了周末下午或者晚上,然后周六上午来了电话….。。。。于是又约了周天下午。。。