09 2019 档案

摘要:Trie树, 即字典树, 又称单词查找树或键树, 多叉树 基本性质 根节点不包含字符,除根节点外每一个节点都只包含一个字符 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串 每个节点的所有子节点包含的字符都不相同 本质: 利用字符串之间的 公共前缀 ,将重复的前缀合并在一起 主要操 阅读全文
posted @ 2019-09-30 16:49 james_cai 阅读(277) 评论(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)
摘要:方法一,使用数组辅助 方法二,使用快慢指针 双指针 p 和 q 的话,当 q 指向末尾的 NULL, p 与 q 之间相隔的元素个数为 n 时,那么删除掉 p 的下一个指针就完成了要求。 设置虚拟节点 dummyHead 指向 head 设定双指针 p 和 q ,初始都指向虚拟节点 dummyHea 阅读全文
posted @ 2019-09-23 16:58 james_cai 阅读(170) 评论(0) 推荐(0)
摘要:定义 堆是一个完全二叉树 堆中每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值 如何存储一个堆 完全二叉树比较适合用数组来存储 数组中下标为 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)
摘要:首先要弄清楚代理是相对于哪一方来说的,一般都是资源的请求方(client) 正向代理 将自己要访问的资源告诉Proxy,让Proxy帮你拿到数据返回给你,Proxy服务于Client, 常用于FQ和跨权限操作; 反向代理 也是将自己要访问的资源告诉Proxy,让Proxy帮你拿到数据返回给你,但是P 阅读全文
posted @ 2019-09-23 09:46 james_cai 阅读(164) 评论(0) 推荐(0)
摘要:如图所示,硬链接与原始文件共用一个inode,但inode是不跨文件系统的(Ext3、Ext4),每个文件系统都有自己的inode列表。因此,硬链接是没办法跨文件系统的 而软链接不同,软链接相当于重新创建了一个文件。这个文件也有独立的inode,只不过开打这个文件看里面内容的时候,内容指向另外一个文 阅读全文
posted @ 2019-09-23 09:27 james_cai 阅读(1265) 评论(0) 推荐(1)
摘要:解法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-03 16:41 james_cai 阅读(1805) 评论(0) 推荐(0)
摘要:长度 联想到下标 有效括号 联想到栈 最长 要对长度态判断 阅读全文
posted @ 2019-09-02 12:07 james_cai 阅读(627) 评论(0) 推荐(0)
摘要:利用栈后进先出的特性解决 阅读全文
posted @ 2019-09-02 10:40 james_cai 阅读(161) 评论(0) 推荐(0)