We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
出处 LeetCode 算法第162题 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。 数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。 你可以假设 nums[-1] = nums[n] = -∞。 示例 1: 输入: nums = [1,2,3,1] 输出: 2 解释: 3 是峰值元素,你的函数应该返回其索引 2。 示例 2: 输入: nums = [1,2,1,3,5,6,4] 输出: 1 或 5 解释: 你的函数可以返回索引 1,其峰值元素为 2; 或者返回索引 5, 其峰值元素为 6。 说明: 你的解法应该是 O(logN) 时间复杂度的。
出处 LeetCode 算法第162题
峰值元素是指其值大于左右相邻值的元素。
给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。
nums
nums[i] ≠ nums[i+1]
数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。
你可以假设 nums[-1] = nums[n] = -∞。
nums[-1] = nums[n] = -∞
示例 1:
输入: nums = [1,2,3,1] 输出: 2 解释: 3 是峰值元素,你的函数应该返回其索引 2。
示例 2:
输入: nums = [1,2,1,3,5,6,4] 输出: 1 或 5 解释: 你的函数可以返回索引 1,其峰值元素为 2; 或者返回索引 5, 其峰值元素为 6。
说明:
你的解法应该是 O(logN) 时间复杂度的。
时间复杂度限制为O(logN),所以我们采用二分法
/** * @param {number[]} nums * @return {number} */ var findPeakElement = function (nums) { return helper(nums, 0, nums.length - 1); }; function helper(nums, left, right) { if (right >= left) { var middle = Math.floor((right - left) / 2) + left; if (middle === 0) { if (nums[middle] > nums[middle + 1]) { return middle; } } else if (middle === nums.length - 1) { if (nums[middle] > nums[middle - 1]) { return middle; } } else { if (nums[middle] > nums[middle - 1] && nums[middle] > nums[middle + 1]) { return middle; } } if (right > left) { return helper(nums, left, middle - 1) || helper(nums, middle + 1, right) || false; } else { return false; } } else { return false; } } console.log(findPeakElement([1, 2]))
The text was updated successfully, but these errors were encountered:
No branches or pull requests
习题
思路
时间复杂度限制为O(logN),所以我们采用二分法
解答
The text was updated successfully, but these errors were encountered: