题解 | #寻找峰值#
寻找峰值
https://www.nowcoder.com/practice/fcf87540c4f347bcb4cf720b5b350c76
using System; using System.Collections.Generic; class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ public int findPeakElement(List<int> nums) { // write code here if (nums == null || nums.Count == 0) return -1; if (nums.Count == 1) return 0; return ZBCZ(0, nums.Count - 1, nums); } public int ZBCZ(int nL, int nR, List<int> nums) { if (nL > nR) return -1; int nM = (nL + nR) / 2; int nML = nM - 1 >= 0 ? nums[nM - 1] : int.MinValue; int nMR = nM + 1 <= nums.Count - 1 ? nums[nM + 1] : int.MinValue; if (nums[nM] > nML && nums[nM] > nMR) return nM; int nLR = ZBCZ(nL, nM - 1, nums); if (nLR >= 0) return nLR; int nRR = ZBCZ(nM + 1, nR, nums); if (nRR >= 0) return nRR; else return -1; } }