领扣LintCode算法问题答案-75. 寻找峰值

    科技2024-02-22  105

    领扣LintCode算法问题答案-75. 寻找峰值

    目录

    75. 寻找峰值描述样例 1:样例 2: 题解鸣谢

    75. 寻找峰值

    描述

    你给出一个整数数组(size为n),其具有以下特点:

    相邻位置的数字是不同的A[0] < A[1] 并且 A[n - 2] > A[n - 1]

    假定P是峰值的位置则满足A[P] > A[P-1]且A[P] > A[P+1],返回数组中任意一个峰值的位置。

    数组保证至少存在一个峰如果数组存在多个峰,返回其中任意一个就行数组至少包含 3 个数

    样例 1:

    输入: [1, 2, 1, 3, 4, 5, 7, 6] 输出: 1 or 6 解释: 返回峰顶元素的下标

    样例 2:

    输入: [1,2,3,4,1] 输出: 3

    题解

    public class Solution { /** * @param A: An integers array. * @return: return any of peek positions. */ public int findPeak(int[] A) { // write your code here if (A.length == 3) { return 1; } int left = 1; int right = A.length - 2; while (left <= right) { int mid = (left + right) >>> 1; long midVal = A[mid]; if (midVal > A[mid - 1] && midVal > A[mid + 1]) return mid; else if (A[mid - 1] > A[mid + 1]) right = mid - 1; else left = mid + 1; } return 1; } }

    原题链接点这里

    鸣谢

    非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。 欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。

    Processed: 0.010, SQL: 9