python
Angel_LQ
蜗牛一步一步往上爬
展开
-
ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)
在Django视图函数中经常出现类似于'ascii' codec can't decode byte 0xef in position 0:ordinal not in range(128)的错误。 在解决错误之前,首先要了解unicode和utf-8的区别。 unicode指的是万国码,是一种“字码表”。而utf-8是这种字码表储存的编码方法。unic转载 2017-11-22 12:55:45 · 619 阅读 · 0 评论 -
50. Pow(x, n)
这道题要求计算 X 的 n 次幂,如果采用普通解法,无法AC,会提示超时,因此采用递归实现二分法,将时间复杂度由 O(n) 提升到 O(logn)。class Solution(object): def myPow_time_limit(self, x, n): #这样会超时 count = 0 result = 1 while co...原创 2018-04-19 21:55:47 · 222 阅读 · 0 评论 -
53. Maximum Subarray 最大子串和问题
LeetCode传送门 本题为经典的面试笔试题,要求给一个数字序列,求其最大子串和,注意需要与最大子序列和的区别,子串要求连续,而子序列只要数字的顺序符合即可,不要求连续。 解题思路主要有一下三种: 1.暴力解法: 这里不再啰嗦,算法复杂度为O(n2),LeetCode中超时无法 AC。 2.分治法 思路:将大问题转化为小问题,然后解决。 ...原创 2018-04-20 11:41:07 · 281 阅读 · 0 评论 -
63. Unique Paths II
LeetCode传送门 这道题是一道典型的动态规划问题,首先我们在 62. Unique Paths 中可以推得没有空点的情况下的 DP 公式: DP[i][j] = DP[i][j-1] + DP[i-1][j] 这里给出代码实现:#062class Solution: def uniquePaths(self, m, n): """ ...原创 2018-05-09 11:40:02 · 152 阅读 · 0 评论 -
54. Spiral Matrix
Leetcode传送门 本题要求顺时针输出一个数组,同样出现在了剑指 offer 中(面试题29),解决思路较为简单,但是需要思考大量的临界值问题,通过画图后可以快速的理清思路,show you the code:#把一个数组顺序输出class Solution(object): def spiralPrint(self, matrix, start): #输出这一圈 ...原创 2018-05-03 17:04:45 · 143 阅读 · 0 评论 -
51. N-Queens
LeetCode传送门 这道题的要求是N皇后问题:放置n的皇后在n*n的棋盘上,使其任意两个皇后不能相互攻击。给定整数n,返回所有可能情况,其中‘Q’表示皇后,‘.’表示空位置。 两个皇后不能相互攻击,即要求这两个皇后不在同一行、同一列及同一斜线上。 我们使用一个 List 表示皇后位置,res[i] 代表第 i 行的 Queen 位置为 res[i]。这时,在检查当前位置的皇后...原创 2018-05-11 11:47:39 · 164 阅读 · 0 评论 -
56. Merge Intervals
Leetcode传送门 这道题要求合并有重复的区间。 解题思路: 1.首先将区间按 start 排序 2.遍历区间,如果区间2 的 start 大于区间 1的 end,那么就把区间 1 保存下来,否则,把区间1 和 2 合并为一个区间,并选择 1.end 和 2.end 中较大者为新区间的 end。show you the code:# Definition for an ...原创 2018-05-05 17:00:53 · 154 阅读 · 0 评论 -
78. Subsets
LeetCode传送门 这道题要求输出一个 list 的全部子序列。 最开始想到的方法应该是回溯法,但是这里我们使用 动态规划 的思路来解决这个问题。 输入:[1, 2, 3] 假设我们已经得到了 [1, 2] 的结果 res2 = [[], [1], [2], [1, 2]], 那么对于res2 的 4 个结果, 数字 3 本身有两种可能,即输入,或者不输入,所以 res...原创 2018-05-24 21:53:23 · 176 阅读 · 0 评论 -
86. Partition List
LeetCode传送门 一道比较基础,应该熟练掌握的链表题目。 题目给出一个链表 head 和一个 int 变量 x ,要求把链表中小于 x 的节点都放到大于 x 的节点的前面,并保持相对位置不变。show you the code , No bb。# Definition for singly-linked list.class ListNode: def __init__...原创 2018-05-29 20:19:12 · 135 阅读 · 0 评论 -
39. Combination Sum 回溯算法简析
LeetCode传送门 这道题要求给你一组正数 C,然后给你一个目标数 T,让你从那组C中找到加在一起等于 T 的那些组合。 例如:给你 [2,3,6,7] 和 7,则返回 [[2,2,3],[7] ] 。 想解决这个问题前,我们首先引入一个新问题,图(树)的遍历问题。 假如我们想要深度优先遍历这个树,返回[ [2,2,2,2] , [2,2,2,3] , [.....原创 2018-04-13 23:02:42 · 118 阅读 · 0 评论 -
49. Group Anagrams python实现
class Solution(object): def groupAnagrams(self, strs): """ :type strs: List[str] :rtype: List[List[str]] """ strstemp = [] for str in strs: ...原创 2018-04-18 23:14:18 · 213 阅读 · 0 评论 -
json 简介
JSON 数据格式 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。基础结构JSON建构于两种结构:1. “名称/值”对的集合(A collection of name/value pair转载 2017-11-24 19:12:05 · 210 阅读 · 0 评论 -
由输出全排列引出的赋值问题
首先抛出最开始想解决的问题,即输出一个list型输入的全排列。Example: input : [1,2,3] output : [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 问题解决可以采用递归,即list[1,2,3]的全排列可以看做 1 加上list[2,3]的全排列 + 2 加上list[1,3]的全排列 + ...原创 2018-03-26 19:57:50 · 145 阅读 · 0 评论 -
30. Substring with Concatenation of All Words
LEETCODE传送门 这里主要记录 HashMap 的使用:1. list 转为 dict 之后,空间换时间,使得每次在 list 中的查找遍历的O(n2)减小到O(n),适用于多次访问 list 的情况下。2. list 中如果存在重复,则可以将 dict 的 value 标记为 0,1,2,3 ... 同时建立一个 tempdict 用来存已经使用过的,以避免 dict 中 key 重...原创 2018-04-09 20:41:05 · 104 阅读 · 0 评论 -
python 中的变量赋值和 swap(a, b)
python 中为什么不需要 swap() 函数,而只需要执行: a, b = b, a 就可以交换 a,b 的值呢? 这是因为在 python 中,变量所指向的都是一个对象,以引用的方式来使用对象。 以 a = 1 为例,python 中首先给 “1”分配一个地址,然后把 “1”放进去,即在“地址 1 ”中放入“1”,然后让 a 指向这个地址(a 也就是 C++ ...原创 2018-04-16 14:31:59 · 990 阅读 · 0 评论 -
34. Search for a Range
LeetCode传送门典型的二分查找的衍生问题,AC代码如下:class Solution(object): def searchTwo(self, left, right, nums, target): if left > right: return None temp = nums[(left + right) // 2]...原创 2018-04-10 22:47:32 · 111 阅读 · 0 评论 -
python里字典的实现
字典类型是Python中最常用的数据类型之一,它是一个键值对的集合,字典通过键来索引,关联到相对的值,理论上它的查询复杂度是 O(1) ,它的实现是通过Hash tables的。哈希表 (hash tables)哈希表(也叫散列表),根据关键值对(Key-value)而直接进行访问的数据结构。它通过把key和value映射到表中一个位置来访问记录,这种查询速度非常快,更新也快。而这...原创 2018-04-11 10:15:34 · 352 阅读 · 0 评论 -
31. Next Permutation 解法思路与 python 实现
LeetCode传送门 题目要求实现所给 list 的下一个字典序,也就是说,给出比当前数字大的最小数字,以 [1,2,3] 为例,比 123 大的数字的最小值为 132 。 例子 [1,4,5,5,7,6,4,2] 结果:[1,4,5,6,2,4,5,7] 想要实现,我们首先需要倒数找到第一个数字满足 nums[i] < nums[i+1],这样的话 nums[0] 到...原创 2018-04-12 15:42:41 · 261 阅读 · 0 评论 -
由 LeetCode 031 得到的全排列解法
由此文 LeetCode 031 我们可以根据一个 list 序列得到它的下一个字典序列,由此得到全排列的实现方法。 没啥说的,直接上代码了。class Solution(object): def sortlist(self, nums, right, left): left += 1 for i in range(right, left):...原创 2018-04-12 15:54:57 · 129 阅读 · 0 评论 -
84. Largest Rectangle in Histogram 柱状图中的最大矩形
LeetCode传送门求柱状图(Histogram)中的最大矩形(Largest Rectangle),是一道ACM比赛题,又是一道Leetcode题,还是一道经常被问的面试题。如下图所示,可以将柱状图表示为一个数组[2,1,5,6,2,3],每个柱子的宽度假设是一个单位。求出的最大的矩形应该如下斜线所示,大小是10。最容易想到的解法是brute forceclass Solution: ...原创 2018-05-31 12:59:13 · 2247 阅读 · 0 评论