求取列表“峰与谷”

简介: 求取列表“峰与谷”

1 引言

       本题来源于力扣周赛的第一题,目的是通过独特的算法加上简单的编程解决问题。

2 问题描述

  给你一个下标从 0 开始的整数数组 nums 。如果两侧距 i 最近的不相等邻居的值均小于 nums[i] ,则下标 i nums 中,某个峰的一部分。类似地,如果两侧距 i 最近的不相等邻居的值均大于 nums[i] ,则下标 i nums 中某个谷的一部分。对于相邻下标 i j ,如果 nums[i] == nums[j] , 则认为这两下标属于 同一个 峰或谷。
注意,要使某个下标所做峰或谷的一部分,那么它左右两侧必须 都 存在不相等邻居。
返回
nums 中峰和谷的数量。
示例
1
输入:
nums = [2,4,1,1,6,5]
输出:3
解释:
在下标
0 :由于 2 的左侧不存在不相等邻居,所以下标 0 既不是峰也不是谷。
在下标
1 4 的最近不相等邻居是 2 1 。由于 4 > 2 4 > 1 ,下标 1 是一个峰。
在下标
2 1 的最近不相等邻居是 4 6 。由于 1 < 4 1 < 6 ,下标 2 是一个谷。
在下标
3 1 的最近不相等邻居是 4 6 。由于 1 < 4 1 < 6 ,下标 3 符合谷的定义,但需要注意它和下标 2 是同一个谷的一部分。
在下标
4 6 的最近不相等邻居是 1 5 。由于 6 > 1 6 > 5 ,下标 4 是一个峰。
在下标
5 :由于 5 的右侧不存在不相等邻居,所以下标 5 既不是峰也不是谷。
共有
3 个峰和谷,所以返回 3

3 算法描述

本题解题的思路在于判断列表内数据的特点,我们根据题目的描述可以知道峰与谷的特点(峰:一个元素比前一个和后一个元素大)(谷:一个元素比前一个元素和后一个元素小)。通过前面两个特点我们就可以通过循环进行判断,但我们还需要注意的一点是峰值的元素可以跟后一个元素一样,谷值的特点也可以和后一个元素一样。同时因为这道题目的特殊性,我们还需要对列表中相邻的两个元素进行去重。

4 代码

def wz():
   num = []
   for x in range(len(nums) - 1):
       if nums[x] != nums[x + 1]:
           num.append(nums[x])
   num.append(nums[-1])
   n = 0
   for i in range(1, len(num) - 1):
       if (num[i] > num[i - 1] and num[i] >= num[i + 1]) or (num[i] < num[i - 1] and num[i] <= num[i + 1]):
           n += 1
       else:
           n += 0
   return n


nums = [5, 7, 7, 1, 7]
print(wz())


5 结语

通过对题目的判定,想到最简单的方法,再加以实现,这才是编程的魅力。


目录
相关文章
|
存储 SQL 运维
TIDB和MySQL的区别
TIDB和MySQL的区别
1881 0
|
存储 关系型数据库 MySQL
MySQL库的操作『增删改查 ‖ 编码问题 ‖ 备份与恢复』
MySQL库的操作『增删改查 ‖ 编码问题 ‖ 备份与恢复』
128 0
|
Python
python ndarray属性分析介绍
python ndarray属性分析介绍
202 0
|
开发工具 Android开发 UED
探索移动应用开发之旅:打造流畅用户体验的秘诀
【9月更文挑战第18天】在数字化时代,移动应用成为连接用户与服务的关键桥梁。本文将深入探讨移动应用开发的精髓,从选择合适的开发工具到设计直观的用户界面,再到优化性能和提升用户体验的策略。我们将以一个简单的代码示例来展示如何实现这些目标,引导你步入高效、创新的移动应用开发之路。
|
人工智能 监控 安全
未来智能家居技术发展趋势及应用前景探析
随着人工智能和物联网技术的快速发展,智能家居正成为未来科技应用的热点之一。本文将探讨智能家居技术的最新发展趋势,并分析其在生活中的实际应用前景,为读者提供深入了解和思考的视角。【7月更文挑战第2天】
292 0
|
前端开发 容器
CSS3新增了哪些新特性?
CSS3新增了哪些新特性?
238 0
|
存储
【51单片机】用定时器扫描矩阵键盘
【51单片机】用定时器扫描矩阵键盘
519 0
|
存储 C语言 C++
【C语言期末不挂科——指针初阶篇】(上)
【C语言期末不挂科——指针初阶篇】
|
数据采集 搜索推荐 安全
为什么我的谷歌关键词优化效果不好?
答案是:关键词优化效果取决于是否投入足够多的GPB外链资源和足够多的优质内容。 理解谷歌关键词优化 关键词优化是一种在网站内容中添加特定词汇的技术,目的是提高该网站在搜索引擎中的排名,尤其是在谷歌这样的主流搜索引擎中。 谷歌的搜索算法 谷歌的搜索算法非常复杂,它考虑了200多个因素来确定网站在搜索结果中的排名。 其中,关键词是影响排名的一个重要因素,但并非唯一的因素。
141 0
为什么我的谷歌关键词优化效果不好?
下列软件包有未满足的依赖关系,依赖: libxxx(= 2.2.10) 但是 2.3.0正要被安装
下列软件包有未满足的依赖关系,依赖: libxxx(= 2.2.10) 但是 2.3.0正要被安装
472 0