欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

数据结构算法(菲波那切数列、队列和栈)

程序员文章站 2023-09-17 21:02:19
回文数:a=input('输入:')b=a[::-1]if a==b: print('{} 是回文数'.format(a))else: print('{} 不是回文数'.format(a))斐波那契数列:## 迭代器:斐波那契数列class FeiBo(): def __init__(self,n): self.a = 1 self.b = 1 self.c = 0 self.n = n def...

回文数:

a=input('输入:') b=a[::-1] if a==b: print('{} 是回文数'.format(a)) else: print('{} 不是回文数'.format(a)) 

斐波那契数列:

## 迭代器:斐波那契数列 class FeiBo(): def __init__(self,n): self.a = 1 self.b = 1 self.c = 0 self.n = n def __iter__(self): return self def __next__(self): if self.c < self.n: r = self.a
            self.a,self.b = self.b, self.a+self.b
            self.c+=1 return r else: raise StopIteration

f=FeiBo(9) for i in f: print(i) # ## 生成器: # # def FeiBo(n): #     a=1 #     b=1 #     for i in range(n): #         yield a #         a,b=b,a+b # f=FeiBo(10) # for i in f: #     print(i) 

是否存在重复字母:

1 def uu(): 2 str='nsjadsabjkfas' 3 b=set() 4 for i in str: 5 b.add(i) 6 if len(b)==len(str): 7 return True 8 else: 9 return False 10 a=uu() 11 print(a) 是否存在重复字母 

输出四个六:

"""
输出4个6
""" def num(): return [lambda x:i*x for i in range(4)] print([m(2) for m in num()]) """
将列表推导式[]变成(),相当于生成一个生成器,没有参数延时生效
输出:[0, 2, 4, 6]
""" def num(): return (lambda x:i*x for i in range(4)) print([m(2) for m in num()]) """
在列表推导式中及时传参,i=i
输出:[0, 2, 4, 6]
""" def num(): return [lambda x,i=i:i*x for i in range(4)] print([m(2) for m in num()]) 
def get_index(nums, target): """
    :param nums:传的参数列表
    :param target:目标值
    :return:索引值列表
    """ index_dict={ } for index,num in enumerate(nums): tem=target-num
        tem_index=index_dict.get(tem,'') if tem_index: print(tem_index,index) else: index_dict[num]=index if __name__ == '__main__': pp = get_index([2, 4, 5, 8, 1, 11, 4, 15, 7], 9) 

利用队列实现栈:

class Stack(object): '''栈''' def __init__(self): self.__list = [] def push(self, item): '''添加一个元素item到栈''' self.__list.append(item) def pop(self): '''弹出栈顶元素''' return self.__list.pop() def peek(self): '''返回栈顶元素''' if self.__list: return self.__list[-1] else: return None def is_empty(self): '''判断是否为空''' return self.__list == [] # return not self.__list def size(self): '''返回栈的元素个数''' return len(self.__list) if __name__ == '__main__': s = Stack() 

一球从100米高度*落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?

a = [100] #每个‘反弹落地’过程经过的路程,第1次只有落地(100米) h = 100 #每个‘反弹落地’过程,反弹的高度,第1次为100米 print('第1次从%s米高落地,走过%s米,之后又反弹至%s米。' % (h, a[0], h/2)) for i in range(2,11): #第1次已初始化,再循环9次 a.append(h) #先计算路程,再高度减半,因为一个‘反弹落地’为2个高度 h = h / 2 print('第%s次从%s米高落地,共走过%s米,之后又反弹至%s米。' % (i, h, sum(a), h / 2)) 
s = "Let's take LeetCode contest" b=" ".join(s.split(' ')[::-1])[::-1] print(b) 
s="Let's take LeetCode contest" b=s.split(' ') c=' '.join([i[::-1] for i in b]) print(c) 

代码仅供参考,有不足之处望指正

本文地址:https://blog.csdn.net/weixin_49189239/article/details/107155183