当前位置: 首页 > news >正文

leetcode峰值问题

leetcode峰值问题

题目链接:![https://leetcode.cn/problems/find-peak-element/description/]

解题思路

这题可以使用二分法作答。虽然数组不是有序的,但是用二分法同样可以做。

代码如下:

class Solution {
public:int findPeakElement(vector<int>& nums) {if (nums.size() == 1)return 0;int mid, left, right;int length = nums.size();if (nums[0] > nums[1])return 0;else if (nums[nums.size() - 1] > nums[nums.size() - 2])return (length - 1);else // 此时说明0位置上扬,末尾置下降{left = 0;right = length - 1;mid = left + (right - left) / 2;while (left <= right) {if (nums[mid] > nums[mid + 1] && nums[mid] > nums[mid - 1])return mid;else if (nums[mid] < nums[mid + 1]) // 往后二分{left = mid + 1;mid = left + (right - left) / 2;} else if (nums[mid] < nums[mid - 1]) // 往前二分{right = mid - 1;mid = left + (right - left) / 2;}}}return -1;}
};

我们首先判断首尾是不是峰值,如果首尾皆不是峰值,那么峰值一定在中间(大家可以画图理解一下:开头是上升的,末尾是下降的)。计算得到中间位置,判断是否为峰值。如果不是,若中间位置左边是下降的,往左边二分;若中间位置右侧是上升的,往右侧二分。重复直到找到峰值或到达临界条件为止。

http://www.dtcms.com/a/508151.html

相关文章:

  • 一锅汤资源网站建设大全哪家公司做门户网站
  • 做微信投票的网站中学教材数字化学习资源的建设——教材配套网站的设计及发展趋势
  • 上海做网站天锐招聘网站免费平台
  • Flocke 算法(Algorithm 954)求解一元三次方程详解
  • 自己怎么做外贸网站空间青岛制作网站哪家公司好
  • p2p网站开发 源代码网站建设 资质要求
  • Docker常用镜像使用指南:从入门到实战
  • JAVA Log 日志级别和使用技巧
  • 通达信--公式系统(答疑)
  • 自己做的网站怎么在局域网中访问公司网站如何优化
  • Spring注解篇:@RequestBody详解!
  • 漫画网站建设教程视频室内3d设计软件
  • 用项目实战案例讲清“交换机与路由器”的核心区别
  • 域名转出过程网站能打开吗网站模板怎么使用
  • 内部类的实现
  • 【Git】【Sourcetree】安装与使用教程
  • 怎样用vps做网站企业邮箱免费版注册
  • 大型网站开发费用邯郸做网站的博客
  • 做一家公司网站要注意哪些在线做网站黄
  • 前端写一个密码登录,验证码登录,注册模板
  • TypeScript 面试题及详细答案 100题 (51-60)-- 类(Class)
  • 湖北省建设工程质量安全协会网站建设局主要负责什么
  • 针对跨学科环境挑战的大语言模型微调
  • 视频网站开发前景如何网站做最优是什么意思
  • SpringCloud-网关
  • 弹窗网站制作器做网站需要一些什么东西
  • 并发编程深度解析:从读写锁到TCP Socket并发读写
  • Linux1020 GBLIC安装mysql
  • 东莞网站建设环保设备wordpress模板 众筹
  • 高水平大学建设大学网站华为网站建设招聘