博客
关于我
【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/

    你可能感兴趣的文章
    Oracle JDBC url的几种方式
    查看>>
    Oracle JDK vs OpenJDK
    查看>>
    ORACLE MERGE INTO (2)
    查看>>
    oracle ogg 单实例双向复制搭建(oracle-oracle)--Oracle GoldenGate
    查看>>
    Oracle ora-12514报错解决方法
    查看>>
    oracle ORA-14402 OGG-01296
    查看>>
    oracle package包头和package body包体例子
    查看>>
    oracle partition by list,深入解析partition-list 分区
    查看>>
    Oracle PL/SQL Dev工具(破解版)被植入勒索病毒的安全预警及自查通告
    查看>>
    oracle pl/sql 导出用户表结构
    查看>>
    Oracle PLSQL Demo - 17.游标查询个别字段(非整表)
    查看>>
    oracle rac 安装 PRVG-13606 ntp 同步报错解决过程
    查看>>
    Oracle RAC性能调整的方案
    查看>>
    oracle rac集群的东西之QQ聊天
    查看>>
    UML— 用例图
    查看>>
    Oracle Schema Objects——Tables——Table Compression
    查看>>
    oracle scott趣事
    查看>>
    oracle script
    查看>>
    Oracle select表要带双引号的原因
    查看>>
    Oracle SOA Suit Adapter
    查看>>