求数组两个值最大差 问题描述:
【算法|求数组两个值最大差-Python】同学给出了个小题,发现好久不练习,果然-不会了。
给定一个整数数组,找两个值a,b(数组中位置为i,j),在i<=j的前提下,求b-a的最大值
仔细看题目是不是很熟悉,就是LeetCode:121. Best Time to Buy and Sell Stock(买卖股票的最佳时机)这个题目,一般是动态规划或者遍历一遍即可。
示例:
输入:[1, 2, 8, 8, 10, 5]问题分析:
输出: 9
解释: 很显然 b=10, a=1,所以结果是9。
问题有很多种解法,我们先说第一种哈。从左向右一遍扫描。
(1)用
min_value
记录扫描过的数组值的最小值,max_diff
则记录 b-a
差值的最大值。(2)依次扫描,并更新
min_value
、max_diff
即可。Python3实现:
# @Time:2021/01/21
# @Author :class Solution:
def maxArr(self, arr):max_diff = float('-inf')# 用于记录最大差值
min_value = https://www.it610.com/article/float('inf')# 用于记录数组的最小值n = len(arr)# 数组的长度for i in range(n):
if arr[i] < min_value:
min_value = https://www.it610.com/article/arr[i]
if max_diff < (arr[i] - min_value):
max_diff = arr[i] - min_value
return max_diffif __name__ =='__main__':
tar_arr = [1, 2, 3, 8, 4, 5]# 7
tar_arr = [1, 2, 8, 8, 10, 5]# 9
tar_arr = [10, 2, 5, 10, 4, 15, 1, 2]# 13
# tar_arr = [10, 2, 5, 10, 4, 15, 1, 2]# 13
# tar_arr = [10, 1, 10]# 13print(Solution().maxArr(tar_arr))
声明: 总结学习,有问题或不当之处,可以批评指正哦,谢谢。
推荐阅读
- 我的Python心路历程 第九期 (9.2 通过pycharm的python Console获取配置路径)
- 程序人生|三阶魔方自动求解及动态可视化matlab代码
- 我的Python心路历程 第十一期 (11.1 初探python调试总结之基础篇)
- python基础教程|Python模块(基本概念、2种导入方法(import与from...import)和使用)
- 机器学习系列文章|【晨读算法】为什么经常看到使用朴素贝叶斯公式的时候把分母忽略了()
- 算法|1357篇ECCV 2020论文打包下载!奖项公布(李飞飞高徒获最佳论文奖)
- 职场|自学Python6个月,找到了月薪8K的工作,多亏了这套学习方式
- python|Python可以比C++更快,你不信()
- python|力扣 leetcode 1319. 连通网络的操作次数 (python)并查集模板快速解及树的高效解