提交 483482a7 编写于 作者: GreyZeng's avatar GreyZeng

find peak element

上级 7824d19f
...@@ -11,31 +11,32 @@ package binarysearch; ...@@ -11,31 +11,32 @@ package binarysearch;
// 二分法 // 二分法
// 笔记:https://www.cnblogs.com/greyzeng/p/16622554.html // 笔记:https://www.cnblogs.com/greyzeng/p/16622554.html
public class LeetCode_0162_FindPeakElement { public class LeetCode_0162_FindPeakElement {
public int findPeakElement(int[] nums) { public int findPeakElement(int[] nums) {
if (nums.length == 1) { if (nums.length == 1) {
return 0; return 0;
} }
if (nums.length == 2) { if (nums.length == 2) {
return nums[0] > nums[1] ? 0 : 1; return nums[0] > nums[1] ? 0 : 1;
} }
if (nums[0] > nums[1]) { int l = 0;
return 0; int r = nums.length - 1;
} while (l <= r) {
if (nums[nums.length - 1] > nums[nums.length - 2]) { if (nums[l] > nums[l + 1]) {
return nums.length - 1; return l;
} }
int l = 1; if (nums[r] > nums[r - 1]) {
int r = nums.length - 2; return r;
while (l <= r) { }
int m = l + ((r - l) >> 1); int m = l + ((r - l) >> 1);
if (nums[m] > nums[m - 1] && nums[m] > nums[m + 1]) { if (nums[m] > nums[m - 1] && nums[m] > nums[m + 1]) {
return m; return m;
} else if (nums[m] <= nums[m - 1]) { } else if (nums[m] < nums[m - 1]) {
r = m - 1; r = m - 1;
} else if (nums[m] <= nums[m + 1]) { } else {
l = m + 1; // nums[m] < nums[m + 1]
} l = m + 1;
} }
return -1; }
} return -1;
}
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册