python数据结构与算法
接近真理的真
这个作者很懒,什么都没留下…
展开
-
双向队列实现回文词(python)
class Deque: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def addFront(self, item):#从队首加入 self.items.append(item) def addRear(self, item):#从队尾加入 self.items.insert(0,.原创 2021-09-07 22:33:29 · 146 阅读 · 0 评论 -
约瑟夫问题(热土豆)(队列)python
有n个人,编号为1~n,从第一个人开始报数,从1开始报,报到m的人会死掉,然后从第m+1个人开始,重复以上过程。在死了n-1个人后,问最后一个人的编号是?class Queue: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def enqueue(self, item): self.items.ins...原创 2021-09-01 18:01:54 · 395 阅读 · 0 评论 -
10以内计算python
class Stack: def __init__(self):#创建一个空 self.items = [] def isEmpty(self):#判断返回栈是否为空 return self.items == [] def push(self, item):#将一个item加入栈顶 self.items.append(item) def pop(self):#查看栈顶数据,看完后删除 return self.i.原创 2021-08-27 11:57:44 · 153 阅读 · 0 评论 -
表达式转化python(中缀转后缀)
class Stack: def __init__(self):#创建一个空 self.items = [] def isEmpty(self):#判断返回栈是否为空 return self.items == [] def push(self, item):#将一个item加入栈顶 self.items.append(item) def pop(self):#查看栈顶数据,看完后删除 return self.i.原创 2021-08-27 11:26:30 · 267 阅读 · 0 评论 -
进制转化(python)(10进制转化为16以下)
class Stack: def __init__(self):#创建一个空栈 self.items = [] def isEmpty(self):#判断返回栈是否为空 return self.items == [] def push(self, item):#将一个item加入栈顶 self.items.append(item) def pop(self):#将一个元素从栈顶删除,栈被修改 return se.原创 2021-08-21 16:50:24 · 151 阅读 · 0 评论 -
栈的应用简单括号匹配(python详细注释)
class Stack: def __init__(self):#创建一个空栈 self.items = [] def isEmpty(self):#判断返回栈是否为空 return self.items == [] def push(self, item):#将一个item加入栈顶 self.items.append(item) def pop(self):#将一个元素从栈顶删除,栈被修改 return se.原创 2021-08-20 10:49:37 · 122 阅读 · 0 评论 -
通用括号匹配(栈的应用)python(详细注释)
class Stack: def __init__(self):#创建一个空栈 self.items = [] def isEmpty(self):#判断返回栈是否为空 return self.items == [] def push(self, item):#将一个item加入栈顶 self.items.append(item) def pop(self):#将一个元素从栈顶删除,栈被修改 return se.原创 2021-08-20 10:48:38 · 223 阅读 · 0 评论 -
变位词的判断(计数比较)
方案一def judge1(s1,s2): c1=[0]*26#产生一个26个0的数组 c2=[0]*26 for i in range(len(s1)): pos=ord(s1[i])-ord('a') c1[pos]+=1 for i in range(len(s2)): pos=ord(s2[i])-ord('a') c2[pos]+=1 if c1==c2: bool=Tru原创 2021-08-17 11:07:05 · 163 阅读 · 0 评论 -
变位词的判断
方案一(逐字检查)def judge1(s1,s2): alist=list(s2)#需要实现打钩标记, # 将打钩的字母命为None, # 但由于字符串是不可变类型,需要将其复制到list中 pos1=0 bool=True while pos1<len(s1) and bool: pos2=0 found=False while pos2<len(s2) and not found:#...原创 2021-08-16 20:44:18 · 83 阅读 · 0 评论 -
辗转相除法和更相减损法原理和算法
辗转相除法:现在需要去求解a和b的最大公约数k。可知a=m*k,b=n*k,a=t*b+r之后带a=m*k,b=n*k到a=q*k+r中r=(m-n*t)*k所以可知gcb(a,b)=gcb(b,r)def gcd(a,b): t=0 if b>a:#交换顺序 t=b b=a a=t print(a,b) if a%b!=0:#辗转相除 r=a%b a=b原创 2021-08-14 17:46:46 · 845 阅读 · 0 评论