摘要:
实现Trie tree,可用作实现词典。可用来存储,查找及删除string, 同时实现返回前缀为指定字符所有结果的功能。 每个node存所有child节点与及对应path上的字符所组成的map,利用count来记录每个节点的子树种存在多少word,便于删除的操作。 findAllWithPrefix 阅读全文
摘要:
1 import java.util.ArrayList; 2 import java.util.List; 3 4 class Entry { 5 K key; 6 V value; 7 8 Entry(K key, V value) { 9 this.key = key; 10 this.value = value... 阅读全文
摘要:
分享三个hard难度的题,个人感觉比较有意思和有实际意义的三道,思路上和上次的有些区别,不过大致上还是一样的。 1:All Valid Permutations Of Parentheses II Get all valid permutations of l pairs of (), m pair 阅读全文
摘要:
DFS(深度优先搜索)解题思路:recursion的思想。(常见题型:当题目要求穷举所有可能性时,多用DFS),解题思路分两步: 1:考虑总共recursion有几层 2:考虑每一层recursion内有多少个case 1.All Subsets Given a set of characters 阅读全文
摘要:
part1:countingsort的算法感觉还是蛮绕的,贼烧脑,注意是对16进制的每一位进行排序,取得相应位数值算法可以写成(keys[i]%(whichDigit+1))/whichDigit; code: part2:radixsort在coutingsort基础上叠加7次,到int的取值范围 阅读全文
摘要:
实现splayTree,不过感觉大头都已经写好了,难度不算太大。 part1:zig-zig,类似zig-zag,不过是先要rotate node.parent再rotate node。 part2:splaynode: 运行结果: 阅读全文
摘要:
part1:length2Paths():只能想出三层loop的办法,实在想不出快一些的办法了。但是这种算法时间复杂度是θ(n2),而且part2中length越长,时间复杂度越高,如果length是五的话,就是θ(n5),感觉过于慢了,应该是有更快的方法的。 code: part2:在part一的 阅读全文
摘要:
第一遍看作业要求没看懂。。不过看懂了后算法实现起来还是蛮简单的,主要在于遍历每个墙时,找出其分隔的两个元素,若两元素间无path,把墙拆了2333,有path的话墙不拆,注意那个它给定union(root1,root2)函数接受的两个参数必须是root,所以正确的写法应该是union(find(i) 阅读全文
摘要:
测试insert select merge 和quick四种排序的时间: 输出的数据太多就不传上来了,比较结果从慢到快分别为select,insert,merge,quick 在数据较少的情况时,insert比quick要快(大概是小于100吧) 所以best就是将insert和quick结合一下: 阅读全文
摘要:
part1 实现mergesort,很奇怪的是感觉按作业上的步骤并没有用到recursion,因为用到了makeQueueOfQueues这个函数,不过不用这个函数用recursion也是可以直接做的。 代码: makeQueueOfQueues: 1 public static LinkedQue 阅读全文