本文共 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)
代码解释:
归并排序的时间复杂度为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/