10 2018 档案

摘要:2018-10-26 23:13:41 问题描述: 问题求解: n皇后问题是一个经典的递归求解的问题,主要的trick就是将对角线元素用数组来进行记录是否使用过。 public List<List<String>> solveNQueens(int n) { List<List<String>> r 阅读全文
posted @ 2018-10-26 23:21 hyserendipity 阅读(210) 评论(0) 推荐(0)
摘要:2018-10-26 21:06:54 问题描述: 问题求解: 方法一、BFS 首先将使用BFS进行解空间的遍历,也就是将本问题转化成了搜索问题,但是有两个地方需要注意: 1、状态保存的问题,每个位置的状态由其位置信息和速度信息构成,但是如果将所有的位置出现过的速度进行保存会MLE,这里进行了一步简 阅读全文
posted @ 2018-10-26 21:14 hyserendipity 阅读(286) 评论(0) 推荐(0)
摘要:2018-10-26 00:32:05 问题描述: 问题求解: 方法一、Trie 最长出现的字符串,最容易想到的解法就是Trie树了,于是首先使用Trie树进行了实现,代码量有点大,当然了是可以A掉的,只是对于这种Easy的题,理论上是不该超过50行代码的。 方法二、split 作为一条Easy必然 阅读全文
posted @ 2018-10-26 00:53 hyserendipity 阅读(368) 评论(0) 推荐(0)
摘要:2018-09-24 15:01:37 动态规划(DP: Dynamic Programming)是算法设计方法之一,在程序设计竞赛中经常被选作题材。在此,我们考察一些经典的DP问题,来看看DP究竟是何种类型的算法。 一、01背包问题 问题描述: 有n个重量和价值分别为wi,vi的物品。从这些物品中 阅读全文
posted @ 2018-10-14 21:28 hyserendipity 阅读(500) 评论(0) 推荐(0)
摘要:2018-10-06 22:04:38 问题描述: 问题求解: 对于边没有权重的最短路径的求解,首选的方案是bfs。 本题要求是求遍历所有节点的最短路径,由于本题中是没有要求一个节点只能访问一次的,也就是说可以访问一个节点多次,但是如果表征两次节点状态呢?可以使用(curNode, VisitedN 阅读全文
posted @ 2018-10-06 22:08 hyserendipity 阅读(2890) 评论(0) 推荐(0)
摘要:2018-10-06 22:01:11 问题描述: 问题求解: 为每个频率创建一个栈即可。 阅读全文
posted @ 2018-10-06 22:03 hyserendipity 阅读(590) 评论(0) 推荐(0)
摘要:2018-10-06 20:17:30 问题描述: 问题求解: 问题规模是10000,已经基本说明是O(nlogn)复杂度的算法,这个复杂度最常见的就是排序算法了,本题确实是使用排序算法来进行进行求解。 本题中指出最后支付的费用和工人的quality相关,也就是说 paid[i] : quality 阅读全文
posted @ 2018-10-06 20:58 hyserendipity 阅读(541) 评论(0) 推荐(0)
摘要:2018-10-06 19:44:18 问题描述: 问题求解: 经典的求连通块问题的扩展,问题规模不大,可以暴力求解。 解法一、Brute Force O(n^4) 解法二、 为每个连通块做上标记,并得到每个连通块的面积,之后再对0进行遍历,依次寻找其四个相邻的边的area,将他们加起来再从中取ma 阅读全文
posted @ 2018-10-06 20:13 hyserendipity 阅读(290) 评论(0) 推荐(0)
摘要:2018-10-04 12:53:06 问题描述: 问题求解: 首先本题给出了问题的规模,从Note中我们可以看到解码后的字符串长度甚至可以达到2^63的长度,这个长度已经远远超过整型数的范围,因此如果只是先解码后提取的话无疑是会超时的。 那么本题还有什么别的思路呢?正常来说如果碰到这种重复循环的问 阅读全文
posted @ 2018-10-04 14:45 hyserendipity 阅读(359) 评论(0) 推荐(0)
摘要:2018-10-03 20:16:53 非递归遍历二叉树是使用堆栈来进行保存,个人推荐使用双while结构,完全按照遍历顺序来进行堆栈的操作,当然在前序和后序的遍历过程中还有其他的压栈流程。 一、Binary Tree Preorder Traversal 问题描述: 问题求解: 先序遍历就是在第一 阅读全文
posted @ 2018-10-03 22:16 hyserendipity 阅读(1947) 评论(0) 推荐(0)
摘要:2018-10-03 19:29:43 问题描述: 问题求解: 很有意思的题目,首先想到的是暴力遍历解空间,当然也用到了memo,可惜还是TLE,因为时间复杂度确实有点过高了,应该是O(n!)。 本题给出了数据规模,基本已经提示了时间复杂度为O(n^3)左右比较合适。下面给出本题的标准解法,使用的是 阅读全文
posted @ 2018-10-03 19:52 hyserendipity 阅读(466) 评论(0) 推荐(0)
摘要:2018-10-03 01:12:42 问题描述: 问题求解: 本题本质上其实是一个preSum问题的变种,每次求preSum % k,并将之保存到map中,如果之后再次得到相同的余数,则表示这两者之间的和是k的整数倍。 需要注意的有两点: 1)map初始化的时候需要加入(0, -1) 2)如果k 阅读全文
posted @ 2018-10-03 01:16 hyserendipity 阅读(223) 评论(0) 推荐(0)
摘要:2018-10-02 23:46:38 问题描述: 问题求解: 显然是个解空间遍历问题,每次修改其中一位,由于步长是1,所以可以使用BFS进行解空间的遍历。 解法一、单向BFS public int ladderLength(String beginWord, String endWord, Lis 阅读全文
posted @ 2018-10-03 00:54 hyserendipity 阅读(625) 评论(0) 推荐(0)