上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 22 下一页
摘要: 方法一:Inorder Traversal Binary Search Tree 的一个性质就是 inorder 遍历的时候是有序的。 这道题和 426. Convert Binary Search Tree to Sort Doubly Linked List 类似,需要一个 prev 指针记录前 阅读全文
posted @ 2018-08-29 23:57 約束の空 阅读(107) 评论(0) 推荐(0)
摘要: 利用matrix的第一行和第一列来记录,第二遍扫描时再根据记录的信息把matrix的元素置0。 阅读全文
posted @ 2018-08-29 22:36 約束の空 阅读(107) 评论(0) 推荐(0)
摘要: 如果把矩阵元素看做点,小的元素到打的元素看做边连起来,这道题等价于在一个有向图中寻找最长路径。 第一想法是用dfs或bfs,但是直接做超时了。以dfs为例,时间复杂度为O(2^(m+n)),空间复杂度O(h)=O(mn) 由于dfs中很多节点的最长路径都被重复计算了,因此可以 Memorizatio 阅读全文
posted @ 2018-08-29 06:52 約束の空 阅读(271) 评论(0) 推荐(0)
摘要: 15. 3Sum Two Sum 的 follow up Two Sum 使用hashtable做到O(n)时间复杂度 所以看到这道题,第一想法是固定一个元素,剩下的用 Two Sum 处理。但是由于这道题有重复元素存在,最后去重会TLE,因此不能这样做。 在一个有序数组里寻找加和为给定值的两个元素 阅读全文
posted @ 2018-08-29 05:40 約束の空 阅读(98) 评论(0) 推荐(0)
摘要: isdigit(), isalpha(), isalnum() 用来判断是否是数字,是否是字母,是否是数字+字母 toupper(), tolower() 对char大小写切换 阅读全文
posted @ 2018-08-28 22:18 約束の空 阅读(109) 评论(0) 推荐(0)
摘要: 这道题本质上和 Climbing Stairs 那道DP题是一样的,但是由于 decode 有范围限制,所以写起来有很多条件。 dp[i] 表示到下标为i为止的字符能得到的解码个数 dp[i] += dp[i-1] if s[i]!='0' += dp[i-2] if s[i-1:i+1] in " 阅读全文
posted @ 2018-08-28 08:14 約束の空 阅读(148) 评论(0) 推荐(0)
摘要: DP问题,有点难想,但是理解以后不难。 记 dp[i][j] 为以 a[i][j] 为右下角的正方形的最大边长。 递推公式写起来不难,dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1 if a[i][j]==1 如下图所示,较小的边+1 阅读全文
posted @ 2018-08-28 03:21 約束の空 阅读(125) 评论(0) 推荐(0)
摘要: Facebook full-time 的面试题。 遇到这种数字的题,第一感觉就是递归。而且一定要问清楚数字给定的范围,会不会是负数,有没有范围等等。题目给定了范围 0~2^31-1,因此最高到 billion。 根据大小来拆分然后递归,注意一些corner cases,1~19,20,30,…… 总 阅读全文
posted @ 2018-08-27 09:31 約束の空 阅读(180) 评论(0) 推荐(0)
摘要: 当前height下, 分别表示 a[i][j] 向左和向右能扩展的位置下标(右下标要+1,这样右-左刚好是矩形的宽) 阅读全文
posted @ 2018-08-27 08:38 約束の空 阅读(96) 评论(0) 推荐(0)
摘要: 这道题是 53. Maximum Subarray 的变形。由于负数的存在,max_ending_here[i] 可能是以下三种情况。 max_ending_here[i] * nums[i] nums[i]>0 min_ending_here[i] * nums[i] nums[i]<0 nums 阅读全文
posted @ 2018-08-26 22:09 約束の空 阅读(82) 评论(0) 推荐(0)
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 22 下一页