Python程序员面试算法宝典---解题总结: 第4章 数组 4.2 如何查找数组中元素的最大值和最小值

本文是Python程序员面试算法系列的第四章,聚焦数组问题。主要探讨如何高效地在数组中找到最大值和最小值,通过实例解析算法思路,帮助提升面试准备。
摘要由CSDN通过智能技术生成
# -*- coding: utf-8 -*-

'''
Python程序员面试算法宝典---解题总结: 第4章 数组 4.2 如何查找数组中元素的最大值和最小值

题目:
给定数组a1,a2,a3,..,an,要求找出数组中的最大值和最小值。
假设数组中的值两两各不相同。

分析:
我记得之前有分治算法的题目就是求数组的最大值和最小值的。
最简单的方法就是遍历整个数组用两个变量minValue和maxVale来记录最小值和最大值。
分治算法的思想:
将问题划分成更小的问题,对小问题求解,将各个小问题的求解值汇总,
然后求解出大问题的值。

关键:
1 分治三步骤
1) 划分子问题,2) 递归, 3)合并

2 为了减少递归的次数
在只有两个元素的时候直接比较,而不是通过递归来比较
        # 如果有两个元素就可以比较大小了,节省递归次数
        if begin + 1 == end:
            if data[begin] > data[end]:
                return data[end], data[begin]
            else:
                return data[begin], data[end]

参考:
Python程序员面试算法宝典
'''

class MyArray(object):
    def __init__(self):
        self.min = float('inf')
        self.max = float('-inf')

    def findMinAndMax(self, data, begin, end):
        if not data:
            return None, None
        if begin > end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值