LintCode Maximum Number in Mountain

来源:互联网 发布:mhol捏脸数据 编辑:程序博客网 时间:2024/05/31 19:37

description:
Given a mountain sequence of n integers which increase firstly and then decrease, find the mountain top.

Have you met this question in a real interview? Yes
Example
Given nums = [1, 2, 4, 8, 6, 3] return 8
Given nums = [10, 9, 8, 7], return 10

使用二分法,二分法的关键点:二分出来的数据只有2个,对着两个数进行处理。

public class Solution {    /**     * @param nums a mountain sequence which increase firstly and then decrease     * @return then mountain top     */    public int mountainSequence(int[] nums) {        // Write your code here        if (nums == null || nums.length == 0) {            return 0;        }        int start = 0, end = nums.length - 1;        while (start + 1 < end) {            int mid = start + (end - start) / 2;            if (nums[mid] > nums[mid + 1]) {                end = mid;            } else {                start = mid;            }        }        return Math.max(nums[start], nums[end]);    }}
0 0