07 2018 档案

摘要:2018-07-31 17:47:13 问题描述: 问题求解: 本题要求在不构建二叉树的情况下对先序遍历生成的序列化字符串进行合法性验证,这里有个技巧性较强的验证方法,就是采用当前可用的指针数目进行验证,最初的时候只有一个指针,每当遇到一个节点,那么需要消耗一个指针,同时,如果是非空节点需要额外增加 阅读全文
posted @ 2018-07-31 17:53 hyserendipity 阅读(224) 评论(0) 推荐(0)
摘要:2018-07-31 17:28:42 问题描述: 问题求解: 很容易想到的是Brute Force,也就是枚举所有可能的pairs,这种解法的时间复杂度为O(n ^ 2),由于本题的数据规模较大,会TLE。那么就要对算法进行改进了。 这里用到的解法是Two Pointers,左右各设置一个指针,l 阅读全文
posted @ 2018-07-31 17:41 hyserendipity 阅读(186) 评论(0) 推荐(0)
摘要:2018-07-31 15:46:34 一、插入 Insert into a Binary Search Tree 问题描述: 问题求解: 二、删除 Delete Node in a BST 问题描述: 问题求解: 阅读全文
posted @ 2018-07-31 15:54 hyserendipity 阅读(301) 评论(0) 推荐(0)
摘要:2018-07-30 22:05:52 问题描述: 问题求解: 本题个人感觉还是挺有意思的,题目要求的是最长的文件路径,其实是需要keep tracking路径长度,如果出现文件则需要进行比较,看是否为当前的最大长度。 难点就在于如何keep tracking,不妨将文件的路径旋转90度,那么就可以 阅读全文
posted @ 2018-07-30 22:20 hyserendipity 阅读(362) 评论(0) 推荐(0)
摘要:2018-07-29 17:42:29 问题描述: 问题求解: 本题是要求寻找一棵树中的重复子树,问题的难点在于如何在遍历的时候对之前遍历过的子树进行描述和保存。 这里就需要使用之前使用过的二叉树序列化的手法,将遍历到的二叉树进行序列化表达,我们知道序列化的二叉树可以唯一的表示一棵二叉树,并可以用来 阅读全文
posted @ 2018-07-29 18:20 hyserendipity 阅读(818) 评论(0) 推荐(0)
摘要:2018-07-29 17:08:15 问题描述: 问题求解: 字符串替换的问题有个技巧就是从右向左进行替换,这样的话,左边的index就不需要考虑变动了。 阅读全文
posted @ 2018-07-29 17:11 hyserendipity 阅读(567) 评论(0) 推荐(0)
摘要:2018-07-28 16:52:20 问题描述: 问题求解: 使用bucket数组来记录每个数最后出现的位置,然后从左向右遍历一遍即可。 阅读全文
posted @ 2018-07-28 16:54 hyserendipity 阅读(245) 评论(0) 推荐(0)
摘要:2018-07-28 15:30:21 一、判断是否为丑数 问题描述: 问题求解: 所谓丑数,首先得是正数,然后其质数因子只包含了2,3,4,因此我们只需要对当前的数分别除2,3,4直到不能除为止。 二、第n个丑数 问题描述: 问题求解: 由上面检测丑数的解法我们可以知道,每次丑数的生成都是使用2, 阅读全文
posted @ 2018-07-28 16:27 hyserendipity 阅读(455) 评论(0) 推荐(0)
摘要:2018-07-27 15:55:13 问题描述: 问题求解: 题目中说明了最后的宽度计算其实是按照满二叉树来进行计算的,也就是说如果我们能够得到每层最左边的节点编号和最右边的节点编号,那么本题就可以进行解决了。 另外,在如何编号的问题上,既然是满二叉树,那么编号的方式自然是父节点i,左子节点2 * 阅读全文
posted @ 2018-07-27 16:05 hyserendipity 阅读(359) 评论(0) 推荐(0)
摘要:2018-07-26 17:38:37 问题描述: 给定一个二叉树(具有根结点 root), 一个目标结点 target ,和一个整数值 K 。 返回到目标结点 target 距离为 K 的所有结点的值的列表。 答案可以以任何顺序返回。 示例 1: 输入:root = [3,5,1,6,2,0,8, 阅读全文
posted @ 2018-07-26 18:12 hyserendipity 阅读(420) 评论(0) 推荐(0)
摘要:2018-07-18 11:19:19 一、Minimum Window Substring 问题描述: 问题求解: public String minWindow(String s, String t) { String res = ""; if (t.length() > s.length()) 阅读全文
posted @ 2018-07-23 16:04 hyserendipity 阅读(308) 评论(0) 推荐(0)
摘要:2018-07-15 19:23:08 Valid Anagram Valid Anagram 问题描述: 问题描述: 可以使用map来记录各个字符出现的个数,在O(n)的时间复杂度内完成,当然也可以使用排序算法在O(nlogn)完成。 Find All Anagrams in a String F 阅读全文
posted @ 2018-07-18 11:15 hyserendipity 阅读(267) 评论(0) 推荐(0)
摘要:2018-07-15 18:36:29 问题描述: 问题求解: 阅读全文
posted @ 2018-07-15 18:37 hyserendipity 阅读(190) 评论(0) 推荐(0)
摘要:2018-07-15 10:33:46 问题描述: 问题求解: 其实是一个解空间遍历的问题,每个节点可以扩展8条边,由此问题变成了图中的最短路径问题,由于本题中路径长度为1,所以最高效的解法就是使用BFS进行层次遍历。 想到使用图来做其实问题已经就解决的一大半,剩下的基本就是宽搜的模板了。 阅读全文
posted @ 2018-07-15 10:39 hyserendipity 阅读(434) 评论(0) 推荐(1)
摘要:2018-07-15 09:33:38 一、沉稳(1)不要随便显露你的情绪。(2)不要逢人就诉说你的困难和遭遇。(3)在征询别人的意见之前,自己先思考,但不要先讲。(4)不要一有机会就唠叨你的不满。(5)重要的决定尽量有别人商量,最好隔一天再发布。(6)讲话不要有任何的慌张,走路也是。(7)自信是好 阅读全文
posted @ 2018-07-15 09:35 hyserendipity 阅读(319) 评论(0) 推荐(0)
摘要:2018-07-14 09:57:59 问题描述: 问题求解: 本题本质上是个挺模板的题目。本质是一个求最后每个落点的数目,用总的数目来除有所可能生成的可能性。这种计数的问题可以使用动态规划来进行解决。 在本题中有两个注意点: 1)可以使用两个数组滚动使用来实现重复利用,这里我的实现使用了一个tri 阅读全文
posted @ 2018-07-14 10:05 hyserendipity 阅读(214) 评论(0) 推荐(0)
摘要:2018-07-12 23:21:53 问题描述: 问题求解: dp[i][j] : 以ai结尾的分j个部分得到的最大值 dp[i][j] = max{dp[k][j - 1] + (ak+1 + ... + ai) / (i - k)} k = [j - 2, i - 1] 阅读全文
posted @ 2018-07-12 23:31 hyserendipity 阅读(273) 评论(0) 推荐(0)
摘要:2018-07-10 18:30:19 贪心法就是遵循某种规则,不断贪心的选取当前最优策略的算法设计方法。一般来说,如果一个问题可以使用贪心法来解决的话,那么它通常是非常高效的。 贪心法困难之处在于: 1)最优策略的选择; 2)算法有效性的证明。 一、区间问题 问题描述: 问题求解: 这个问题其实是 阅读全文
posted @ 2018-07-11 17:27 hyserendipity 阅读(432) 评论(0) 推荐(0)
摘要:2018-07-08 13:24:31 一、525. Contiguous Array 问题描述: 问题求解: 我们都知道对于subarray的问题,暴力求解的时间复杂度为O(n ^ 2),问题规模已经给出是50000量级,显然只能是O(n),至多O(nlogn)的复杂度。 本题使用DP和滑动数组都 阅读全文
posted @ 2018-07-08 13:29 hyserendipity 阅读(521) 评论(0) 推荐(0)
摘要:2018-07-02 14:39:18 最长公共子序列(LCS)是一个在一个序列集合中(通常为两个序列)用来查找所有序列中最长子序列的问题。一个数列 ,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则称为已知序列的最长公共子序列。 最长公共子序列问题是一个经典的计算机科学问题 阅读全文
posted @ 2018-07-02 14:55 hyserendipity 阅读(406) 评论(0) 推荐(0)
摘要:2018-07-02 09:48:48 问题描述: 问题求解: 方法一、问题给了规模n = 2000,也就是说用BF在O(n^2)的时间复杂度可以过,因此,第一个方法就是BF,但是需要注意的是这里已经非常擦边了,所以需要对常数项进行优化。 方法二、这个方法就比较巧妙了,首先使用Set进行去重,然后对 阅读全文
posted @ 2018-07-02 09:55 hyserendipity 阅读(291) 评论(0) 推荐(0)
摘要:2018-07-01 19:13:56 54. Spiral Matrix 54. Spiral Matrix 问题描述: 问题求解: 螺旋输出问题,每次输出圈即可,需要注意的有两点: (1)边界问题:这里可以取m,n的一半向上取整;(需要特别注意在取整前要除一个double类型的数,否则则会自动向 阅读全文
posted @ 2018-07-01 19:20 hyserendipity 阅读(228) 评论(0) 推荐(0)