![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode(python)
文章平均质量分 65
shiquxinkong
这个作者很懒,什么都没留下…
展开
-
【leetcode】Reorder List (python)
问题的思路是这样:循环取头部合并,其实也可以换个角度来看,就是将后面的链表结点,一次隔空插入到第一部分的链表中。class Solution: # @param head, a ListNode # @return nothing def reorderList(self, head): if None == head or None ==原创 2014-07-15 13:27:48 · 1532 阅读 · 0 评论 -
【leetcode】Linked List Cycle (python)
题目分析见这里class Solution: # @param head, a ListNode # @return a list node def detectCycle(self, head): if None == head or None == head.next: return None pfast =原创 2014-07-15 16:24:51 · 762 阅读 · 0 评论 -
二叉树的非递归遍历
先写下这个问题的模式def preorderTraversal(self, root): if root == None: return [] re = [] insert root to stack s while s not empty: cur_root = top of stack s s.pop() how to handle cur_root how to原创 2014-07-14 22:22:47 · 827 阅读 · 0 评论 -
【leetcode】Pascal's Triangle II (python)
其实每一行的结果是二项式展开的系数,但是考虑到当给定的参数过大的时候,在求组合的过程中会出现溢出(中间过程要用到乘法),但是这样的算法的时间复杂度是O(N),所以在参数不太大的时候,还是不错的。这里用迭代的方法来求,当然复杂度就高了,是O(N^2),这里主要说下迭代时候的技巧,即在一个列表(数组)里进行迭代,实现如此的操作,要求在求下一行的时候,要从后往前进行,若是从前向后,就把后面要用的变量原创 2014-07-28 20:27:22 · 1793 阅读 · 2 评论 -
[leetcode] Insertion Sort List(python)
简单的插入排序,总是超时,暂且放在这记录一下。class Solution: # @param head, a ListNode # @return a ListNode def insertionSortList(self, head): if head == None or head.next == None: return head psuhead原创 2014-07-05 15:29:17 · 1098 阅读 · 0 评论 -
【leetcode】sort list(python)
链表的归并排序超时的代码class Solution: def merge(self, head1, head2): if head1 == None: return head2 if head2 == None: return head1 # head1 and head2 point to the same link list if head1 == he原创 2014-07-05 11:12:10 · 892 阅读 · 0 评论 -
【leetcode】Reverse Words in a String (python)
陆陆续续几个月下来,终于把题刷完了,过程中遇到的python的题解很少,这里重新用python实现下,所以题解可能都是总结性的,或者是新的心得,不会仅针对题目本身说的太详细。 def reverseWords(self, s): s = ' '.join(s.split()[::-1]) return s[ : : -1 ] 是将元素进行翻转原创 2014-07-04 17:38:43 · 822 阅读 · 0 评论 -
【leetcode】:Evaluate Reverse Polish Notation (python)
逆波兰式的求解,建立一个类栈容器,遍历给定的逆波兰表达式,遇到数字就push, 遇到操作符就进行出栈,连续出两次,因为给定的四则运算符都是双目的,这里注意下这两个操作数的先后顺序,因为对于加法和乘法没关系,但是对于减法和除法是有先后关系的。然后进行相应的运算,将结果push进栈中。这里附带说明下python中进行除法运算与c,java系列中的除法的不同,就是向下取整的问题。这种不同表现在两个操原创 2014-07-04 17:52:10 · 799 阅读 · 0 评论 -
[leetcode]LRU Cache (python)
LRU:最近最久未使用,为了得到这个最新最久的信息,需要一种策略来进行记录,如果加入类似时间戳式的字段,那么每次删除的时候,就必须通过遍历才能得到时间信息,或者对时间戳进行排序,但是无论哪种,都是需要额外的维护,维护成本都比较高。广泛使用的策略是底层用双端队列来进行维护,双端使得在插入删除时操作更简单。而单单使用双端队列似乎还是不够,比如在get 时,还是需要顺序查找给定的key参数的,所以为原创 2014-07-05 19:26:14 · 2713 阅读 · 1 评论 -
【leetcode】Sum Root to leaf Numbers
简单的二叉树的先根遍历模板的应用class Solution: # @param root, a tree node # @return an integer def hehe(self, num, root): #再原来的基础上*10,再加上当前的root.val num = num * 10 + root.val原创 2014-07-20 16:18:16 · 865 阅读 · 0 评论 -
【leetcode】Clone Graph(python)
类似于二叉树的三种遍历,我们可以基于遍历的模板做很多额外的事情,图的两种遍历,深度和广度模板同样也可以做很多额外的事情,这里举例利用深度优先遍历的模板来进行复制,深度优先中,我们先访问第一个结点,接着访问第一个邻接点,再访问邻节点的邻节点。。。。class Solution: # @param node, a undirected graph node # @return a原创 2014-07-17 00:13:36 · 2112 阅读 · 0 评论 -
【leetcode】Candy(python)
题目要求比其高的邻居要比本身的奖励多,那么最少也要多一个,所有我们可以找到所有的凹点,凹点如下三种情形。找到所有的凹点后,我们就可以从凹点处开始向左右两个方向依次查找递增序列,其中每个高的都要比相邻的矮的多一个,比如1,2,5,4.我们找到凹点为1 和4,那么从1开始向左没有其他点,我们向右,依次得到2 比1高,2的糖果应该是1的基础上加1,为2, 5比2高,5的糖果是在2的基础上加1原创 2014-07-16 21:00:46 · 1314 阅读 · 0 评论 -
【leetcode】Word Break(python)
思路是这样的,我们从第一个字符开始向后依次找,直到找到一个断句的地方,使得当前获得的子串在dict中,若找到最后都没找到,那么就是False了。在找到第一个后,接下来找下一个断句处,当然是从第一个断句处的下一个字符开始找连续的子串,但是这时与第一个就稍有不同,比如说word=‘ab’, dict={ 'a', ab', ...},在找到a后,接下来处理的是b,我们发现b不在dict中,但是我们原创 2014-07-15 21:53:59 · 2406 阅读 · 0 评论 -
【leetcode】Linked List Cycle (python)
class Solution: # @param head, a ListNode # @return a boolean def hasCycle(self, head): if None == head or None == head.next: return False pfast = head原创 2014-07-15 16:30:27 · 764 阅读 · 0 评论