![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
希望可以聪明点
这个作者很懒,什么都没留下…
展开
-
算法11:判断一个二维字符矩阵中是否包含有一条字符串所含字符组成的路径
#算法11;判断一个二维矩阵中是否有一个字符串,它通过一个每个格点有且仅一次,不能重复通过#这里定义的是搜索的四个方向# x + 0, y - 1 ->向"上"搜索# x + 0, y + 1 ->向"下"搜索# x - 1, y + 0 ->向"左"搜索# x + 1, y + 0 ->向"右"搜索next_ = [[0,-1],[0,1],[-1,0],[...原创 2020-04-29 23:51:54 · 792 阅读 · 0 评论 -
算法10:从一个非递减数组的旋转数组中找其最小元素值
#算法:求取一个旋转数组的最小元素#旋转数组定义:一个数组中若干元素移到数组的末尾,称之为数组的旋转#例:array = [1,2,3,4];数组的一个旋转为:array = [3,4,1,2]#移动若干元素,若干包括1个,2个,3个...#问题:若给定一个非递减数组的旋转,如何找到该数组中的最小元素?#不知道什么情况下,会出现这么个问题!#分析:该旋转数组原来是有序,且非递减,则其旋...原创 2020-04-24 00:25:35 · 241 阅读 · 0 评论 -
算法9:"变态"跳台阶
#题目:变态跳台阶(出题的人就是个变态,人家这是牛人)->一次可以跳任意台阶数,如一次跳1个台阶,2个台阶,3个台阶。。。#因此,如果我们想要这个"变态"跳到第n个台阶的话,它有:#"变态"跳到台阶1的跳法+"变态"跳到台阶2的跳法+"变态"跳到台阶3的跳法+...+ "变态"跳到台阶n-1的跳法 + 1(变态直接从0跳到n)#这里的"变态"跳到1,跳到2,跳到3...的跳法,指的是它...原创 2020-04-21 23:15:05 · 207 阅读 · 0 评论 -
算法8:青蛙跳台阶有几种方式
#青蛙跳台阶#一只青蛙一次只能跳一级或者二级台阶,求若台阶为n,青蛙有几种跳法?#这个问题和矩形覆盖问题类似,也是由两种情况开始。#矩形覆盖是:要么你先用2*1的矩形覆盖,要么你用1*2的矩形覆盖。#然后剩余的问题又是一个大矩形的覆盖问题。因为无论你选择哪种方式,最终#我们又回到了一个类似原来的出发点,周而复始。#因此,在这里,青蛙也有两种方式:#1、先跳一个台阶,剩余n-1个台阶;...原创 2020-04-15 00:04:55 · 1800 阅读 · 0 评论 -
算法7:求用小矩形覆盖大矩形有多少种方式
#矩形覆盖算法:#用2*1的小矩形去覆盖2*n的大矩形,要求无重叠#求取总共有多少种方法?#这个大矩形形状是2*n#限定了矩形只有两行#所以覆盖方法有两种覆盖方式:#1、先用2*1条块覆盖,再覆盖剩下的2*(n-1)的大矩形;#2、先用1*2的条块覆盖2*2的区域,再去覆盖2*(n-2)的大矩形。#据此分析:2*n的大矩形覆盖方法数=2*(n-1)的次大矩形覆盖方法数+2*(n-2...原创 2020-04-14 23:43:26 · 925 阅读 · 0 评论 -
算法6:用两个栈实现队列模拟
#定义将数据输入队列中的操作#利用一个栈来存储队列中的值#stack1作为数据输入存储的栈def PushDataToStack(element): stack1.append(element)#定义将数据从队列中输出的操作#利用第二个栈来“反转”第一个栈中存储入的数据的顺序#栈的顺序是"后进先出",然后将逻辑概念中“队列”中队尾元素#压入第二个栈的底端,而第一个栈底部的...原创 2020-04-03 00:27:19 · 123 阅读 · 0 评论 -
算法5:输出二叉树任意一个结点在中序遍历情况下的下一个节点值
#建立一个二叉树#声明一个二叉树节点类#节点中包括:节点值,节点左子树根节点,节点右子树根节点,节点父节点class TreeNode(): def __init__(self,value=None,leftNode=None,rightNode=None,parentNode=None): self.val = value self.leftnod...原创 2020-04-03 00:05:05 · 226 阅读 · 0 评论 -
算法4:用python实现前序中序后续遍历二叉树
#建立一个二叉树#声明一个二叉树节点类#节点中包括:节点值,节点左子树根节点,节点右子树根节点,节点父节点class TreeNode(): def __init__(self,value=None,leftNode=None,rightNode=None,parentNode=None): self.val = value self.leftnod...原创 2020-04-02 00:10:55 · 143 阅读 · 0 评论 -
用python建立任意二叉树
#建立一个二叉树#声明一个二叉树节点类#节点中包括:节点值,节点左子树根节点,节点右子树根节点,节点父节点class TreeNode(): def __init__(self,value=None,leftNode=None,rightNode=None,parentNode=None): self.val = value self.leftnod...原创 2020-04-01 23:50:10 · 1285 阅读 · 0 评论 -
算法3:由二叉树的前序遍历序列和中序遍历序列重建二叉树
import numpy as np#重建二叉树#二叉树的前序遍历preorder = [3,9,20,15,7]#二叉树的中序遍历inorder = [9,3,15,20,7]#定义的临时变量,为了得到二叉树中节点个数#方便后续定义result(存储重建二叉树节点的一个二维数组)p = np.array(preorder)#存储重建二叉树节点的一个二维数组)resu...原创 2020-03-25 00:20:02 · 276 阅读 · 0 评论 -
算法2:用python实现链表的正序和反序输出
#node这是节点类class Node(): #初始化函数 def __init__(self,value=None,next = None): self._value = value self._next = next #获取节点值函数 def getValue(self): return self._value...原创 2020-03-23 23:58:41 · 449 阅读 · 0 评论 -
算法1:从一个有序二维数组中查找目标值
import numpy as np#这里是从一个有序二维数组中(从左到右递增,从上到下递增)查找一个数字#要求的时间复杂度是O(m+n)#这就要求不能用循环了#非常机敏的方法是数组从右上角查找,若其大于目标数值,则向左走#表现为索引值列数减1#若其小于目标值,则其行数加1#表现为索引值行号加1#这算法写得真牛,不知道谁写出来的,厉害,在此实现,向前辈致敬#总结:算法的问题就...原创 2020-03-22 21:22:20 · 718 阅读 · 0 评论 -
Collections中Counter函数,namedtuple函数,defaultdict函数的使用
#python中collections工具包的一点使用#组织特征数据用namedtuple函数from collections import namedtupleFeatures = namedtuple('Features',['age','gender','name'])row = Features(age=22,gender='male',name='Alex')print(ro...原创 2019-11-05 22:37:21 · 151 阅读 · 0 评论