
python
易豆豆
这个作者很懒,什么都没留下…
展开
-
leetcode(一)未做
快慢指针问题汇总**朴素解法:**这道题最朴素的做法是,先遍历一次,计算链表的长度,进而计算链表中间结点的下标(注意偶数结点的时候,得到的是中间的第二个结点),然后再遍历一次,来到所要求结点的位置。缺点:必须先遍历完整个链表,然后才可以「干正事」,再遍历到一半,找到中间结点;在链表的长度很长的时候,这种方法之前的等待会很久。**快慢指针:**比较经典的做法是:使用两个指针变量,刚...原创 2020-03-24 14:43:18 · 209 阅读 · 0 评论 -
leetcode-Python(一)
链表的中间结点方法一:数组思路和算法链表的缺点在于不能通过下标访问对应的元素。因此我们可以考虑对链表进行遍历,同时将遍历到的元素依次放入数组 A 中。如果我们遍历到了 N 个元素,那么链表以及数组的长度也为 N,对应的中间节点即为 A[N/2]。class Solution: def middleNode(self, head: ListNode) -> ListNode:...转载 2020-03-23 10:01:01 · 171 阅读 · 0 评论 -
leetcode练习--(一)栈
Python实现栈栈的抽象数据结构**·**栈是有序的LIFO(后进先出)**·**栈的操作有 Stack() 创建新的空栈。 push(item) 添加新项到栈顶部。 pop() 删除栈顶项并返回栈顶项的值。栈被修改。 peek() 返回栈顶部项。不修改栈。 isEmpty() 测试栈是否为空,返回 Bool 值。 size() 返回栈长度(栈中 item 数量)。利用列...原创 2020-03-22 20:27:47 · 117 阅读 · 0 评论 -
Python课后题:列表生成式
如果list中既包含字符串,又包含整数,由于非字符串类型没有lower()方法,所以列表生成式会报错:L1 = ['Hello', 'World', 18, 'Apple', None]L2 = [i.lower() for i in L1 if isinstance(i, str)]if L2 == ['hello', 'world', 'apple']: print('测试通过!...原创 2020-01-28 21:57:37 · 386 阅读 · 0 评论 -
Python课后练习:迭代
from collections import Iterabled = {'a': 1, 'b': 2, 'c': 3}for key in d: print(key)for value in d.values(): print(value)for key, value in d.items(): #这是键值对的迭代方式 print(key, value)c ...原创 2020-01-28 21:56:44 · 234 阅读 · 0 评论 -
Python课后练习:切片
利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法:首先判断字符串的长度是否为0,如果是,直接返回字符串第二,循环判断字符串的首部是否有空格,如果有,去掉空格,再判断字符串的长度是否为0,如果是,直接返回字符串第三,循环判断字符串的尾部是否有空格,如果有,去掉空格,再判断字符串的长度是否为0,如果是,直接返回字符串最后,返回字符串def ...原创 2020-01-28 21:54:44 · 350 阅读 · 0 评论 -
Python课后练习:函数参数
以下函数允许计算两个数的乘积,请稍加改造,变成可接收一个或多个数并计算乘积:def product(*kk): if len(kk) == 0: raise TypeError i = 1 for x in kk: i = x * i return iprint('product(5) =', product(5))prin...原创 2020-01-28 21:52:56 · 379 阅读 · 0 评论 -
干诺塔问题的原理图解及实现
一、汉诺塔问题 如下图所示,从左到右有A、B、C三根柱子,其中A柱子上面有从小叠到大的n个圆盘,现要求将A柱子上的圆盘移到C柱子上去,期间只有一个原则:一次只能移到一个盘子且大盘子不能在小盘子上面,求移动的步骤和移动的次数(1)n == 1 第1次 1号盘 A---->C sum = 1 次(2) n == 2 第1次 1...原创 2020-01-27 17:04:53 · 413 阅读 · 0 评论