您现在的位置是:主页 > news > 建网站的平台/阳东网站seo
建网站的平台/阳东网站seo
admin2025/5/5 10:32:59【news】
简介建网站的平台,阳东网站seo,郑州有什么好玩的,销客多官网文章目录题目解题代码题目 OJ平台 解题代码 啥也不用说,就是二分秒杀 C实现 class Solution { public:int findPeakElement(vector<int>& nums) {int n nums.size();int l 0,r n-1;//为了不让mid1越界,r取n-1while(l<r){ // 由于当lr时…
建网站的平台,阳东网站seo,郑州有什么好玩的,销客多官网文章目录题目解题代码题目 OJ平台
解题代码 啥也不用说,就是二分秒杀 C实现
class Solution {
public:int findPeakElement(vector<int>& nums) {int n nums.size();int l 0,r n-1;//为了不让mid1越界,r取n-1while(l<r){ // 由于当lr时…
文章目录
- 题目
- 解题代码
题目
OJ平台
解题代码
啥也不用说,就是二分秒杀
C++实现
class Solution {
public:int findPeakElement(vector<int>& nums) {int n = nums.size();int l = 0,r = n-1;//为了不让mid+1越界,r取n-1while(l<r){ // 由于当l==r时答案肯定找到了int mid = l+((r-l)>>1);if(nums[mid]>nums[mid+1])r = mid; //这里同样也是左闭右开,为了让mid+1不越界。elsel = mid+1;}return l;}
};
Golang实现
func findPeakElement(nums []int) int {l := 0; r := len(nums)-1for l<r {mid := (r-l)>>1+l;if nums[mid]>nums[mid+1] {r = mid}else {l = mid+1;}}return l
}
官方通过实现一个get函数防止越界问题
实现了get函数后,便可以自由的比较mid-1、mid、mid+1了
CPP
class Solution {
public:int findPeakElement(vector<int>& nums) {int n = nums.size();// 辅助函数,输入下标 i,返回一个二元组 (0/1, nums[i])// 方便处理 nums[-1] 以及 nums[n] 的边界情况// 返回一个pair的原因在于:如果仅仅通过返回int进行比较,则nums[i]可能也是INT_MINauto get = [&](int i) -> pair<int,int> {if (i == -1 || i == n) {return {0,0};}return {1,nums[i]};};int left = 0, right = n - 1, ans = -1;while (left <= right) {int mid = (left + right) / 2;if (get(mid - 1) < get(mid) && get(mid) > get(mid + 1)) {ans = mid;break;}if (get(mid) < get(mid + 1)) {left = mid + 1;}else {right = mid - 1;}}return ans;}
};
Golang
func findPeakElement(nums []int) int {n := len(nums)// 辅助函数,输入下标 i,返回 nums[i] 的值// 方便处理 nums[-1] 以及 nums[n] 的边界情况// Golang能直接返回int_min的原因在于它返回的是64int的minget := func(i int) int {if i == -1 || i == n {return math.MinInt64}return nums[i]}left, right := 0, n-1for {mid := (left + right) / 2if get(mid-1) < get(mid) && get(mid) > get(mid+1) {return mid}if get(mid) < get(mid+1) {left = mid + 1} else {right = mid - 1}}
}