博客
关于我
【python刷题】分治法
阅读量:474 次
发布时间:2019-03-06

本文共 1725 字,大约阅读时间需要 5 分钟。

归并排序是一种高效的排序算法,适用于大数据量的排序场景。其核心思想是将数组分成两部分,分别进行排序后再合并。以下是归并排序的实现代码以及对应的解释:

def merge(le, ri):    res = []    i = j = 0    while i < len(le) and j < len(ri):        if le[i] < ri[j]:            res.append(le[i])            i += 1        else:            res.append(ri[j])            j += 1    res += le[i:]    res += ri[j:]    return resdef mergeSort(nums):    if len(nums) <= 1:        return nums    mid = len(nums) // 2    left = mergeSort(nums[:mid])    right = mergeSort(nums[mid:])    return merge(left, right)nums = [6,2,1,5,4,3,2,2,7]res = mergeSort(nums)print(res)

代码解释:

  • merge函数:用于合并两个已经排序的数组,返回一个新的排序数组。
  • mergeSort函数:实现归并排序的主要函数,通过递归将数组分成两部分,分别排序后再合并。
  • 归并排序的时间复杂度为O(n log n),在实际应用中常用于大数据量的排序需求。


    LeetCode 241:为运算表达式设计优先级

    在这个问题中,我们需要设计一个运算表达式的优先级系统,支持加、减、乘运算。每个运算符的优先级决定了执行顺序。我们可以通过递归的方式来处理表达式,将其拆分为左边和右边部分,分别计算结果后再合并。

    递归思路:

  • 遍历字符串中的每个字符。
  • 当遇到运算符时,递归处理左边和右边的子表达式。
  • 根据运算符类型,分别计算左边和右边的结果,并将结果按照运算符优先级合并。
  • 代码解释:

    class Solution:    def diffWaysToCompute(self, input: str) -> List[int]:        res = []        n = len(input)        for i in range(n):            c = input[i]            if c in '+-*':                left = self.diffWaysToCompute(input[:i])                right = self.diffWaysToCompute(input[i+1:])                for a in left:                    for b in right:                        if c == '+':                            res.append(a + b)                        elif c == '-':                            res.append(a - b)                        elif c == '*':                            res.append(a * b)            else:                res.append(int(input))        return res

    代码功能:

  • 遍历输入字符串中的每个字符。
  • 当遇到运算符时,递归处理左边和右边的表达式。
  • 根据运算符类型,分别计算左边和右边的结果,并将结果合并。
  • 最后返回所有可能的计算结果。
  • 这个方案通过递归的方式处理表达式,确保了运算符的优先级,实现了表达式的正确计算。

    转载地址:http://wfpbz.baihongyu.com/

    你可能感兴趣的文章
    php查最大值,在PHP数组中查找最大值
    查看>>
    php标签筛选,关于PHP CodeIgniter框架中通过<a>标签和url做多条件分类筛选
    查看>>
    php根据年月日计算年龄
    查看>>
    RabbitMQ - 单机部署(超详细)
    查看>>
    php检查注册,PHP检查注册的电子邮件地址是一个’school.edu’地址
    查看>>
    php模拟发送GET和POST请求
    查看>>
    RabbitMQ - 以 MQ 为例,手写一个 RPC 框架 demo
    查看>>
    php模板引擎smarty
    查看>>
    php正则表达式模式
    查看>>
    php正则表达式的特殊字符含义
    查看>>
    PHP正则表达式获取武汉市的实时pm2.5数据并邮件发送phpmailer
    查看>>
    RabbitMQ + JMeter组合,优化你的中间件处理方式!
    查看>>
    PHP水仙花问题解法之一
    查看>>
    php没有解析是怎么回事,linux下php文件没有被剖析怎么办?_后端开发
    查看>>
    php注册页面实现注册后跳转页面
    查看>>
    PHP消息队列的实现方式与详解,值得一看
    查看>>
    PHP混合Go协程并发
    查看>>
    php源码中如何添加滚动公告,给WordPress网站添加滚动公告的方法
    查看>>
    PHP源码安装后如何新增模块
    查看>>
    php漏洞tips
    查看>>