数据结构
miliang_8421
这个作者很懒,什么都没留下…
展开
-
回溯算法小结
类型一:候选数组中的数可选可不选 (leetcode 40 组合总和) 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。 输入: candidates = [10,1,2,7,6,1,5], target = 8 输出:[[1, 7],[1, 2, 5],[2, 6],[1, 1, 6]] from typing import List class Solu原创 2021-03-30 17:11:29 · 85 阅读 · 0 评论 -
快速排序的扩展--数组中的第k个最大元素(leetcode:215)
快速排序的步骤 1.(partition过程) 以数组的最后一个元素作为参考值(pivot),大于这个元素的值的放右边,等于这个数的值放中间,小于这个数的值放左边。 2. 分别对小于pivot的数和大于pivot的数进行步骤1,并以此进行递归。 快速排序的代码 class QuickSort(object): def __init__(self): pass def quick_sort(self, arr): if len(arr) <= 1:原创 2021-03-27 16:23:43 · 111 阅读 · 0 评论 -
python KMP算法
KMP算法 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next数组来实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度O(m+n)。 python代码实现 # str1 和 str2 def KMP_index(str1, str2): i1, i2原创 2021-03-20 11:22:36 · 228 阅读 · 0 评论 -
python 小和问题和逆序对问题
题目:在一个数组中, 每一个数左边比当前数小的数累加起来, 叫做这个数组的小和。 求一个数组的小和。 def smallsum(arr, l, r): if l == r: return 0 mid = (l + r) >> 1 return smallsum(arr, l, mid) + smallsum(arr, mid + 1, r) + merge(arr, l, mid, r) def merge(arr, start, mid, end):原创 2021-03-16 16:43:51 · 258 阅读 · 0 评论 -
python 常见排序算法
python 常见排序算法 冒泡排序 def maopao_sort(list1: list): """ 冒泡排序 复杂度O(N^2) :param list1: 每次对相邻两个数进行排 :return: """ n = len(list1) if n < 2: return list1 for i in range(n): for j in range(i + 1, n):原创 2021-03-16 14:36:26 · 149 阅读 · 1 评论