旋转数组最小的数字

题目:
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
思路:
因为这个数组整体来说是有序的,只不过是分为前半段和后半段.
对于这种整体为有序的数组可以采用二分查找法进行实现.
第一种情况:(3,4,5,1,2)
这种情况下array[mid]>array[right],left=mid+1
因为这种情况mid一定不是最大的可以排除mid,所以left=mid+1.
第二种情况:(8,6,7)
array[mid]<array[right],right=mid
这种情况mid可能就是最小值,所以right=mid.
第三种情况:(1,0,1,1,1)和(1,1,1,0,1)
array[mid]=array[right]
这种情况下最小值可能在右侧也可能在左侧.
所以right=right-1,依次进行查询.
代码:

public class TwoStackToQuene {
    Stack<Integer> stackOne = new Stack<Integer>();
    Stack<Integer> stackTwo = new Stack<Integer>();

    public void push(int node) {
        stackOne.push(node);
    }

    public int pop() {
        if (stackTwo.isEmpty()) {
            while (!stackOne.isEmpty()) {
                int node = stackOne.pop();
                stackTwo.push(node);
            }
        }
        return stackTwo.pop();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 旋转数组的最小数字 题目 给定一个递增的旋转数组A,返回旋转数组中的最小值。旋转数组:给定一个已排序的数组,假设为...
    蓝雪冬荷阅读 470评论 0 0
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,769评论 0 33
  • 基础篇NumPy的主要对象是同种元素的多维数组。这是一个所有的元素都是一种类型、通过一个正整数元组索引的元素表格(...
    oyan99阅读 5,156评论 0 18
  • 踏实,就是知道一天比一天更努力,每一天都有成长。 鲁迅笔下的祥子,似乎在命运的洪流里有些无可奈何,可他的善良,正直...
    小乌龟慢慢爬_阅读 205评论 0 0
  • 许多人过着没有意义的生活,即使他们在忙一些自以为重要的事情时,他们也显得昏昏庸庸的。这是因为他们在追求一种错误的东...
    水问木心阅读 1,074评论 22 24