
算法与数据结构
北漂客
这个作者很懒,什么都没留下…
展开
-
算法与数据结构:二分查找(python实现)
对于二分查找发大家都很熟悉。就是对于一组有序的数每一次取出它的中间值,直到找到那个数或者循环结束。下边给出循环和递归两种Python代码。循环1:n=100a=range(n)target=33def two(l,r,target): i=0 while l<=r: mid = (l + r) / 2 i+=...原创 2018-10-18 20:03:02 · 172 阅读 · 0 评论 -
leecode525 连续数组
思路:首先就是0,1数量相同的字串,把0换成-1就是求和为0的最长字串。可能性:1、从一个开始求和,和为0的最长字串2、如果是中间字串为的和为0,也就是求和的过程中,有和相同的字串,下标相减,即为中间的和为0的字串长度。def findMaxLength(nums): """ :type nums: List[int] :rtype:...原创 2019-09-21 16:44:14 · 138 阅读 · 0 评论 -
数组去重大全(python)
方法一:使用set直接去重a=[2,2,1,3,1]def quchong(arr): return list(set(arr))print(quchong(a))方法二:使用字典的key去重a=[2,2,1,3,1]def quchong(arr): a={} a = a.fromkeys(arr) return list...原创 2019-07-26 16:35:03 · 9149 阅读 · 0 评论 -
爬楼梯问题
问题:每次爬一个台阶,或者两个台阶,爬n哥台阶有多少种可能。直接使用斐波那契数列可求解但是不容易理解使用递归拆分子问题,n个台阶,如果走一步,剩下n-1个台阶,如果走2步,还有n-2个台阶,这样直到走完。import timedef ff(n): if n==1: return 1 if n==0 : return 1 return ff...原创 2019-07-25 17:02:07 · 211 阅读 · 0 评论 -
算法于数据机构:广度优先遍历/层次遍历(python实现)
层次遍历就是将二叉树按层来输出。这里使用队列来实现,即先存入一个节点,打印该节点的值,出队列,再将左子树入队列,右子树输队列。class Tree(): def __init__(self, note): self.value = note self.right = None self.left = Nonedef creat...原创 2019-04-14 18:47:03 · 593 阅读 · 0 评论 -
算法与数据结构:堆排序(python实现)
堆排序堆排序的时间复杂度为O(n*logn),堆排序必须是完全二叉数。完成二叉数的层次遍历,可以直接使用索引求其父节点。原理在参考文献一中有很详细的图解,这里就不赘述。def adjust_sort(lst,note,height): last = note j= last*2+1 while j<=height: if ...原创 2019-04-09 21:52:00 · 158 阅读 · 0 评论 -
算法与数据结构:前序、中序、后序遍历(python实现)
遍历思想为:前序遍历:根结点 ---> 左子树 ---> 右子树中序遍历:左子树--->根结点---> 右子树后序遍历:左子树 ---> 右子树---> 根结点首先说下递归的思想:只专注于当前的一个小的步骤,控制号结束条件即可。所以对于遍历来说只需要按照上述规则打印即可。前序遍历:class Tree(): def __...原创 2019-04-09 21:51:11 · 465 阅读 · 0 评论 -
算法于数据结构:三路快速排序(python实现)
三路快速排序又叫三路快排,主要思想和前边的快速排序类似,需要使用一个指针lt记录等于base的首位置,gt为大于base的首位置。import randoma=[2,2,3,1,2,6,1,6,3,2,6,5,4,3,2,1,4,5,3,5,3,2,1,2,3,2,1]def quck(arr,l,r): # s = int(random.uniform(l, ...原创 2019-04-08 21:08:41 · 1100 阅读 · 0 评论 -
算法于数据结构:快速排序(python实现)
快速排序快速排序是每次选一个基准,找到基准的正确位置,一般选择第一个数为基准。如 2 4 6 4 3 1 1 6选2为基准base找到2的正确位置,即2在排序完成的位置,2前边的比2小,2后边的比2大。1 1 2 4 6 4 3 6然后将2前边的再次排序,后边的再次排序。直到完全排序完成。程序的主要思想:设置两个指针一个pre保存小于base的最后一位,一个是cur当前指针...原创 2019-04-08 15:38:03 · 155 阅读 · 0 评论 -
算法与数据结构:冒泡排序(python实现)
冒泡排序冒泡排序法就是每进行一次循环将一个最大或者最小的数字交互到尾部。第二次循环将前边的最大或者最小放倒数第二位。(这里全部用的是最大在后)a=[2,8,4,5,9,4,42,0,3,6,8]def bubbleSort(arr): for i in range(len(arr)): for j in range(1,len(arr)-i): ...原创 2019-04-04 18:52:17 · 269 阅读 · 0 评论 -
算法与数据结构:插入排序(python实现)
插入排序每一次将数据插入到合适的位置。如:2,4,6,1,7第一个不动,第二为与第一为比较,如果小于2交互,找到了自己的位置。第三个数再和第二个数比较,小于第二位就交换,第二位再和第一位比较。这样循环。# -*- coding: UTF-8 -*-a=[2,8,4,5,9,4,42,0,3,6,8]def InsertionSort(arr): for i in rang...原创 2019-04-04 18:36:28 · 235 阅读 · 0 评论 -
案例1 数组的查找
案例1 数组的查找原创 2018-07-05 12:13:55 · 191 阅读 · 0 评论 -
Python实现两个矩阵的卷积操作
import numpy as npf = np.array([[1,2,1],[1,0,0],[-1,0,1]])# f = np.array([[3,4,4],# [1,0,2],# [-1,0,3]])img = np.array([ [2,3,7,4,6,2,9], [6,6,9,8,7,4,3], [3,4,8,3,8,9,...原创 2018-10-10 13:13:49 · 9849 阅读 · 2 评论 -
算法与数据结构:归并排序(python实现)
归并排序用下边例子来level 0 8 6 2 3 1 5 7 4leve 1 8 6 2 3 1 5 7 4leve 2 8 6 2 3 1 5 7 4leve 3 8 6 2 3 1 5 7 4先将这组数分组,每次在中间分开,知道分...原创 2018-10-09 22:26:39 · 202 阅读 · 0 评论 -
01背包相关问题python
经典01背包问题: n个物品价值为 p[n],体积为 w[n],现有一个容量为 v 的背包,怎么装物品价值最大?n = 6c = 10w = [2, 2, 3, 1, 5, 2]v = [2, 3, 1, 5, 4, 3]def bag(n,c,w,v): value =[0 for i in range(c+1)] for i in r...原创 2019-09-22 16:44:26 · 252 阅读 · 0 评论