- 博客(6)
- 收藏
- 关注
原创 回溯算法小结
类型一:候选数组中的数可选可不选 (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
116
原创 快速排序的扩展--数组中的第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
137
原创 python ac自动机
AC自动机 Aho-Corasick automaton,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法。其主要是将关键词存储在树形结构里面,通过设置状态控制关键词的匹配 AC自动机代码(python) class Node(object): """节点类""" def __init__(self, char=""): self.children = dict() self.char = char self.word = ""
2021-03-24 14:38:30
1095
1
原创 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
256
原创 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
294
原创 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
178
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人