随笔分类 -  编程谱

摘要:启动mysql container: 设置了root的密码 修改了权限: 但发现通过navicate远程一直无法连接,解决方法是要 修改一次 root的密码 阅读全文
posted @ 2020-04-01 15:55 james_cai 阅读(891) 评论(0) 推荐(0)
摘要:当使用临时的IP请求数据时,由于这些IP的过期时间极短,通常在1分钟~5分钟左右,这时scrapy就会报发以下错误 2020 01 17 17:00:48 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying 阅读全文
posted @ 2020-01-19 10:55 james_cai 阅读(3728) 评论(0) 推荐(0)
摘要:yield 只能定义在function中,用来返回一个 generator 。当知道函数将返回一组只需读取 一次 的巨大值时,它会很方便。来看下以下例子 依次运行N次以下代码时,将输出什么内容? 第一次 第二次 第三次 第四次 第五次之后 `` cc end... Traceback (most r 阅读全文
posted @ 2020-01-13 15:13 james_cai 阅读(196) 评论(0) 推荐(0)
摘要:情况一: a 直接引用外部的,正常运行 情况二:创建local 变量a,直接打印,正常运行 情况三:由于存在 a = 7,此时a代表嵌套函数中的local a , 但在使用a + 2 时,a还未有定义出来,所以报错 针对情况三的解决方法, 在嵌套函数中增加nonlocal a ,代表a专指外部变量即 阅读全文
posted @ 2019-10-14 10:26 james_cai 阅读(5103) 评论(0) 推荐(0)
摘要:递归 广度优先搜索 深度优先搜索 二分 left, right = 0, len(array) 1 while left 阅读全文
posted @ 2019-10-09 18:19 james_cai 阅读(605) 评论(0) 推荐(0)
摘要:关键位运算 x & ( x) 取得最低位1 x & (x 1) 去掉最低位1 阅读全文
posted @ 2019-10-08 11:30 james_cai 阅读(247) 评论(0) 推荐(0)
摘要:什么是位运算 程序中所有数在计算机内存中都是以 二进制 的形式储存的。位运算就是直接对 整数 在内存中的二进制位进行操作。不需要转成十进制,因此处理 速度 非常快 常见操作 XOR 异或 x ^ 0 = x x ^ ~0 = ~x x ^ (~x) = 1s x ^ x = 0 a ^ b = c 阅读全文
posted @ 2019-10-08 09:44 james_cai 阅读(151) 评论(0) 推荐(0)
摘要:``` n = 4 # 以4皇后举例 result = [] # 放置互斥的列、左斜线、右斜线信息 cols= set() pie = set() na = set() def dfs(row, state): if row >= n: result.append(state) for col in range(n): if col in cols or row + col in pie or r 阅读全文
posted @ 2019-09-30 15:52 james_cai 阅读(386) 评论(0) 推荐(0)
摘要:解法一: 数学归纳法 从n =1 n=2 n=x ,从小到大,发现规律。 解法二: DFS + 递归 字符号长度 2 n 暴力解法,结合栈 O(2 2n) 解法三: 解法二上改进 + 剪枝 O(2 n) 阅读全文
posted @ 2019-09-30 11:38 james_cai 阅读(106) 评论(0) 推荐(0)
摘要:关键词 双指针 占坑思想 阅读全文
posted @ 2019-09-27 15:21 james_cai 阅读(120) 评论(0) 推荐(0)
摘要:正确的方法 cols= 3 rows = 2 下面这种做法是错误的 这会导致 memo[0] == memo[1],改变其中一个子数组的值,另一个子数组也会一起变 阅读全文
posted @ 2019-09-26 12:03 james_cai 阅读(13413) 评论(0) 推荐(1)
摘要:定义 堆是一个完全二叉树 堆中每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值 如何存储一个堆 完全二叉树比较适合用数组来存储 数组中下标为 i 的节点的 左子节点: i 2 的节点 右子节点: i 2 + 1 的节点 父节点: i / 2 重要操作 插入一个数据: 新插入数据放到数组 阅读全文
posted @ 2019-09-23 15:51 james_cai 阅读(1222) 评论(0) 推荐(1)
摘要:你有一排书架,有空时会拿些书来看,经常性会买些新书。无奈书架容量有限,当新买的书放不下时,需要一个策略将旧书淘汰。 LRU(最近最少使用)缓存淘汰机制正合适。 1)新买的书放在最左侧。 2)最近常看的书也放在最左侧。 久而久之,越往右边的书越是长时间没看,当有新书时,就从右侧淘汰起。Perfect。 阅读全文
posted @ 2019-09-23 10:57 james_cai 阅读(247) 评论(0) 推荐(0)
摘要:解法1:递归 +备忘录 自顶向下 解法2:动态规划 自底向上 阅读全文
posted @ 2019-09-20 16:43 james_cai 阅读(197) 评论(0) 推荐(0)
摘要:思考: 由于乘法的特殊性,所以nums上每一位的乘积最大值(不论正负),都只与前一个值能达到的最大值(当前数字为正)和最小值(当前数位为负)有关系。 nums = [2,3, 2,4] imin ,imax =1,1 max_product = float(' inf') for num in nu 阅读全文
posted @ 2019-09-19 16:30 james_cai 阅读(525) 评论(1) 推荐(1)
摘要:将nums数组当成是一个赌徒连续几天的输赢情况。 如果昨天赢钱了 =0 ,那今天无论输赢,之后都有可能赢更多钱。所以记住昨天 如果昨天输钱了 int: size = len(nums) dp = [0] size dp[0] = nums[0] for i in range(1,size): if 阅读全文
posted @ 2019-09-19 09:38 james_cai 阅读(115) 评论(0) 推荐(0)
摘要:N = 7 paths = [[1,2],[2,3],[3,4],[4,1],[1,3],[2,4],[5,6],[5,7],[6,7]] res = [0] (N + 1) G = [ [] for _ in range(N + 1)] 使用邻接表存放每个花园与其它花园连接的信息 for x ,y 阅读全文
posted @ 2019-09-16 10:45 james_cai 阅读(284) 评论(0) 推荐(0)
摘要:解题思路,有些类似于在电影院忘了自己是在第几排,就问前一排的人,前一排也不知道,再问前前排。如此一直问到第一排。第一排肯定知道自己是第一排。 然后第二排在第一排的答案上加1。如此经过一递一归,就能求出当前自己是在第几排了。 递归最重要的是想好终止条件。及在每一个递归过程中,自己应该做什么(每个递归过 阅读全文
posted @ 2019-09-06 09:34 james_cai 阅读(335) 评论(0) 推荐(0)
摘要:给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 阅读全文
posted @ 2019-09-05 11:26 james_cai 阅读(806) 评论(0) 推荐(0)
摘要:长度 联想到下标 有效括号 联想到栈 最长 要对长度态判断 阅读全文
posted @ 2019-09-02 12:07 james_cai 阅读(627) 评论(0) 推荐(0)