From 5833ea04f07d1af9ae165246c0aa1d6ba3267213 Mon Sep 17 00:00:00 2001 From: Wen <409053122@qq.com> Date: Mon, 31 Jul 2023 18:10:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:[162]=20=E5=AF=BB=E6=89=BE=E5=B3=B0?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/leecode/javascript/162.寻找峰值.js | 41 ++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/leecode/javascript/162.寻找峰值.js diff --git a/src/leecode/javascript/162.寻找峰值.js b/src/leecode/javascript/162.寻找峰值.js new file mode 100644 index 0000000..f864949 --- /dev/null +++ b/src/leecode/javascript/162.寻找峰值.js @@ -0,0 +1,41 @@ +/* + * @lc app=leetcode.cn id=162 lang=javascript + * + * [162] 寻找峰值 + */ + +// @lc code=start +/** + * @param {number[]} nums + * @return {number} + */ +var findPeakElement = function (nums) { + if (nums.length == 1 || nums.length == 0) return 0; + return split(nums, 0, nums.length); +}; + +function split(nums, front, tail) { + if (front == tail) { + if ( + (front == 0 && nums[front] > nums[front + 1]) || + (front == nums.length - 1 && nums[front] > nums[front - 1]) || + (nums[front] > nums[front - 1] && nums[front] > nums[front + 1]) + ) { + return front; + } else { + return -1; + } + } + const mid = Math.floor((front + tail) / 2); + if (nums[mid] > nums[mid - 1] && nums[mid] > nums[mid + 1]) { + return mid; + } + const left = split(nums, front, mid); + if (left != -1) { + return left; + } + return split(nums, mid + 1, tail); +} + +console.log(findPeakElement([1, 2])); +// @lc code=end