随笔分类 - LeetCode Python
摘要:题目来源: https://leetcode.com/problems/min-stack/ 题意分析: 实现一个小的栈,包括初始化,push,pop,top,和getMin。 题目思路: 思路是用两个数组来处理。 代码(python): 1 class MinStack(object): 2 de
阅读全文
摘要:题目来源: https://leetcode.com/problems/find-minimum-in-rotated-sorted-array-ii/ 题意分析: 给定一个有重复的翻转的数组,找到最小的数。 题目思路: 由于有重复的存在,所以当中间数和两端存在相等的时候就不能用二分的方法来做了,最
阅读全文
摘要:题目来源: https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/ 题意分析: 在一个不重复的翻转的数组里面找到最小那个。例如:4 5 6 7 0 1 2,最小是0. 题目思路: 这里可以利用二分的方法去找最小的值。 代
阅读全文
摘要:题目来源: https://leetcode.com/problems/maximum-product-subarray/ 题意分析: 给定一个数组,这个数组所有子数组都有一个乘积,那么返回最大的乘积。 题目思路: 由于题目输入的都是整型的,所以所有的数相差获得的是最大或者最小值。那么我们同时记录可
阅读全文
摘要:题目来源: https://leetcode.com/problems/reverse-words-in-a-string/ 题意分析: 给定一个字符串,里面包括多个单词,将这个字符串的单词翻转,例如"the sky is blue",得到"blue is sky the". 题目思路: 首先获取每
阅读全文
摘要:题目来源: https://leetcode.com/problems/evaluate-reverse-polish-notation/ 题意分析: 给定一个数组,用这个数组来表示加减乘除,例如 题目思路: 这里考虑的是栈的使用。如果是数字那么push进栈,如果不是,那么把栈后两个数pop出来,进
阅读全文
摘要:题目来源: https://leetcode.com/problems/max-points-on-a-line/ 题意分析: 在一个2D的板上面有很多个点,判断最多有多少个点在同一条直线上。 题目思路: 这里我们可以用斜率来记录两条边是否在同一条直线。如果考虑再细一点,由于double有精度的问题
阅读全文
摘要:题目来源: https://leetcode.com/problems/sort-list/ 题意分析: 用nlog(n)的时间复杂度实现一个链表的排序。 题目思路: 用归并排序的思想,将链表用快慢指针分成两半,然后两半排好序,最后归并。 代码(python): # Definition for s
阅读全文
摘要:题目来源: https://leetcode.com/problems/insertion-sort-list/ 题意分析: 用插入排序排序一个链表。 题目思路: 这题没什么好说的,直接用插入排序就行。 代码(python): 1 # Definition for singly-linked lis
阅读全文
摘要:题目来源: https://leetcode.com/problems/lru-cache/ 实现一个LRU缓存。直接上代码。 代码(python): 1 class LRUCache(object): 2 3 def __init__(self, capacity): 4 """ 5 :type
阅读全文
摘要:题目来源: https://leetcode.com/problems/binary-tree-postorder-traversal/ 题意分析: 后序遍历一棵树,递归的方法很简单,尝试用非递归的方法。 题目思路: 后序遍历的顺序是,先左子树,再右子树,最后才是根节点。递归的思想很简单,那么非递归
阅读全文
摘要:题目来源: https://leetcode.com/problems/binary-tree-preorder-traversal/ 题意分析: 前序遍历一棵树,递归的方法很简单。那么非递归的方法呢。 题目思路: 前序遍历的顺序是先遍历根节点,再遍历左子树,最后遍历右子树。递归的方法很直观。非递归
阅读全文
摘要:题目来源: https://leetcode.com/problems/reorder-list/ 题意分析: 给定一个链表L:L0→L1→…→Ln-1→Ln,改变链表的排序为: L0→Ln→L1→Ln-1→L2→Ln-2→…,要求时间复杂度为O(n),不能改变节点的值。 题目思路: 题目思路是把链
阅读全文
摘要:题目来源: https://leetcode.com/problems/linked-list-cycle-ii/ 题意分析: 给定一个链表,如果链表有环,返回环的起始位置,否则返回NULL。要求常量空间复杂度。 题目思路: 首先可以用快慢指针链表是否有环。假设链表头部到环起点的距离为n,环的长度为
阅读全文
摘要:题目来源: https://leetcode.com/problems/linked-list-cycle/ 题意分析: 给定一个链表,判断链表是否有环。要求O(1)空间时间复杂度。 题目思路: 用快慢指针可以解决这个问题。一个指针每次走两步,一个每次走一步,那么有环的等价条件是两个指针有重合。通过
阅读全文
摘要:题目来源: https://leetcode.com/problems/word-break-ii/ 题意分析: 给定一个字符串s和一个字典dict(set),将所有将s有字典dict组成的结果输出。比如s = "catsanddog",dict = ["cat", "cats", "and", "
阅读全文
摘要:题目来源: https://leetcode.com/problems/word-break/ 题意分析: 给定一个字符串s和一个字典dict,判断s是不是由字典dict里面的元素组成的。 题目思路: 这里可以用动态规划的思想。首先用一个tq[] 存储所有s[:i] 可以由dict组成的下标。如果存
阅读全文
摘要:这道题目不是太懂,参考了http://www.cnblogs.com/zuoyuan/p/3745126.html的博客。 题意: A linked list is given such that each node contains an additional random pointer whi
阅读全文
摘要:题目来源: https://leetcode.com/problems/single-number-ii/ 题意分析: 给定一个数组,数组里面每一个数字都出现了3次除了一个,找出那个数。要求时间复杂度O(n),空间复杂度O(1)。 题目思路: 把所有的数转化成32位的2进制。那么如果没有只出现一次的
阅读全文
摘要:题目来源: https://leetcode.com/problems/single-number/ 题意分析: 给定一个数组,每个数都出现了2次,只有一个出现了一次,找出这个数。要求时间复杂度O(n),空间复杂度O(1)。 题目思路: 这道题目利用位操作。位操作的异或(^),他的其中一个属性是,n
阅读全文

浙公网安备 33010602011771号