- 博客(14)
- 收藏
- 关注
原创 python 二叉树深度遍历、广度遍历
广度遍历 (bfs):将每一层按从左到右的顺序输出def bfs(root:TreeNode): if root==None: return queue=[root] while queue!=[] cur=queue.pop(0) # 队列按照同一层 左节点-右节点 的顺序弹出 print(cur.item) if cur.left: queue.append(cur.left) # 队列按照同一层 左节点-右节点 的顺序存入 if cur.right
2020-10-30 15:35:25 124
原创 leetcode.20 有效的括号
class Solution: def isValid(self, s): while '{}' in s or '()' in s or '[]' in s: s = s.replace('{}', '') s = s.replace('[]', '') s = s.replace('()', '') return s == ''原理是将符合条件的括号用 ’ ’ 替代例如:" {[]} “
2020-09-19 20:37:00 85
原创 python 二分查找
二分查找只能针对有序数组def binary_search(array,item): n=len(array) point=n//2 while n>=1: if array[point]==item: return True elif array[point]<item: return binary_search(array[point+1:],item) else:
2020-08-22 23:02:10 87
原创 python归并排序,从小到大
归并排序和快速排序有一定相似,快速排序是将原始数组依据 mid_value 值,逐渐拆分至每一个元素,而归并排序是首先将数组迭代拆分,拆分至每一个元素后,再将左右元素相互比较,之后逐渐将小数组段拼接起来。假设一个数组为 array=[1,5,3,8,4,8,2,2]首先对该数组进行拆分,第一次拆分:left_array = [1,5,3,8]right_array = [4,8,2,2]第二次拆分:left_array = [1,5]right_array = [3,8]第三次拆分:lef
2020-08-19 21:12:26 319
原创 python快速排序,从小到大
快速排序的主要原理是设置一个基准值,利用游标将比基准值小的数移到数组左边,比基准值大的数移到数组右边,再将基准值放在中间。将基准值左右两边的数组利用迭代,分别进行相同操作,最后得到完整序列假设一个数组为 array=[4,2,8,7,1,3,9]选定基准值为4,mid_value=4,游标 low = 0,high = 6first 从左向右移动,low 从右向左移动,采用填坑的思路,先移动 highhigh= 6,array[high]= 9,满足条件,继续移动;high= 5,array[h
2020-08-17 22:15:35 1445
原创 python双向链表相关函数
定义一个双向链表class DoubleLinklist(object): def __init__(self,node): self._head=node和单向链表一样,第一个节点的 pre 部分不需要定义双向链表相关函数2.1 头插法 add(item) def add(self,item): node=Node(item) cur=self._head node.next=cur self..
2020-08-13 13:25:54 184
原创 python单循环链表相关函数
定义一个单循环链表class SingleCycleLinkList(object): def __init__(self,node): self._head=node if node!=None: node.next=self._head单循环链表相关函数2.1 求长度 length( ) def length(self): cur=self._head count=0 .
2020-08-10 16:33:29 156
原创 python单链表相关函数(2)
…接上篇3.3 单链表删除函数 remove_item( item),item 表示删除的内容 def remove_item(self,item): cur=self._head pre=None while(cur!=None): if cur.item!=item: pre=cur cur=cur.next else:
2020-08-05 19:03:50 141
原创 python单链表相关函数(1)
创建一个节点对象class Node(object): def __init__(self, item): self.item = item self.next = None 创建一个链表对象class SingleLinklist(object): def __init__(self, node): self._head = node该链表的头节点为 Node 类对象,在创建链表之前要先定义一个 No.
2020-08-04 15:56:04 375
原创 python希尔排序,从小到大
希尔排序的原理是按照一定的间距 d 将数组中的元素分组,进行分别插入排序,再逐步缩小 d 的值,反复进行插入排序,最后按照正确顺序输出。假设一个数组为 array=[2,5,3,9,1,4,7,0],共8个元素采用二分法确定每次排序的间距 d ,则 d =4,2,1当 d=4 时,原数组分为(2,1)(5,4)(3,7)(9,0)四组,按照判断大小并交换顺序为(1,2)(4,5)(3,7)(0,9),之后的数组array=[1,4,3,0,2,7,5,9]当 d=2 时,上述数组分为(1,3,2
2020-07-30 14:25:31 417
原创 python插入排序,从小到大
插入排序原理:假设原数组为array=[4,6,2,7,6,9,1]1.交换后array=[4,6,2,7,6,9,1]2.1交换后array=[4,2,6,7,6,9,1]2.2交换后array=[2,4,6,7,6,9,1]3.交换后array=[2,4,6,7,6,9,1]4.1交换后array=[2,4,6,6,7,9,1]……以此类推,第 i 次大循环时将从左往右第 i+1 个元素依次与从左往右的 i 个元素比较,满足条件则交换次序。import numpy as np
2020-07-27 19:39:48 364
原创 python选择排序,从小到大
选择排序原理:假设原数组为 array=[2,6,7,5,8,4,9]1.交换后array=[2,6,7,5,8,4,9]2.1交换后array=[2,5,7,6,8,4,9]2.2交换后array=[2,4,7,6,8,5,9]3.1交换后array=[2,4,6,7,8,5,9]3.2交换后array=[2,4,5,7,8,6,9]……以此类推,可以看到,在第 i 次大循环后,可以确定从左往右第 i 个数的位置。import numpy as npdef selecti
2020-07-26 14:01:16 749
原创 python冒泡排序,从小到大
import numpy as nparray = np.random.randint(0, 11, 6)生成随机数组=============================冒泡排序基本原理:假设原数组为array=[1,5,3,6,4,8,2]1.1交换后array=[1,3,5,6,4,8,2]1.2交换后array=[1,3,5,4,6,8,2]1.3交换后array=[1,3,5,4,6,2,8]每一次大循环后将最大的一个数放在最后2.1交换后array=[1,3,
2020-07-24 15:32:51 2102
原创 正则表达式(1)------元字符
" \ +数字 "(1)表示第n个元组中的内容xu_hao_1=re.search(r'a(bca)\1','abcabca')print(xu_hao_1) #abcabca(bca)\1==bcabca;xu_hao_2=re.search(r'(a)(bca)\2','abcabca')print(xu_hao_2) #abcabcax...
2020-03-26 00:03:26 184
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人