- 博客(162)
- 收藏
- 关注
原创 5G/Wifi6 smartfactory
一直很好奇为啥WIFI不能提供智能工厂。这篇文章稍稍解决了一点我的疑惑。https://www.lightreading.com/mobile/5g/its-5g-vs-wifi-6-for-the-factory-of-the-future/d/d-id/756356简单说。老的WIFI不行,不够稳定,老断线。新的WIFI6可以,没啥不行的。但5G用于工厂也可以。5G另外的一个好处是范围更...
2020-04-24 01:56:50 1067
原创 word cloud
AI AI AI AI AI AIAlgorithms AlgorithmsDistributedSystemMachineLearningLinearRegressionReinforcementLearningClassifierSVMKMeansLSTMNeuralNetworkGANDeepLearningTensorflowPytorchaccelerato...
2020-04-14 00:22:12 374
原创 wide-column store
Wide-column store是概念上Column有无穷多的column。每一行可以有不同的column,相当于一个无限多column的table,每个行有很多的NULL value (空格),所以像个sparse table。是可以无schema限制,自由扩展的。享受了schema-free的好处。又有一个名词叫paritioned row store. 把这些ROW打散到不同的节点上。S...
2020-02-16 12:08:33 2055
原创 56. Merge intervals
Input: [[1,3],[2,6],[8,10],[15,18]]Output: [[1,6],[8,10],[15,18]]class Solution: def merge(self, intervals: List[List[int]]) -> List[List[int]]: intervals.sort() # sort by the first ...
2019-11-24 06:49:59 139
原创 31. Next Permutation
找到list里面下一个permutation的数。case 1: 找到右边不是descending的subarray。这样就可以把右边的,比这个start值大的换过来,然后右边排序,事实上右边还是descending order,所以要反过来。case 2: 找不到右边是descending的subarray。这样整个array反过来。递归的写法。import mathclass Sol...
2019-11-17 12:15:44 138
原创 23. Merge k Sorted Lists
基本思路是merge 2 sorted list,但是用一个heap来表述K个头之间的顺序。然后不断的加入新值到heap。Python里面需要定义一个新的class,其中定义了order。class HeapNode: def __init__(self, n: ListNode): self.node = n def __lt__(self, other):...
2019-11-17 00:47:24 135
原创 2. Add Two Numbers
两个链表,把数从最低位到最高位加起来。顺序是搞好了。主要是carry的问题。有好几个地方,需要考虑。比如最后,需要增加一位数字1.还有如果一个链表结束了,有一个carry,那么这个carry需要在剩下的链表继续,直到carry 消失为止。感觉还能够写的短一些。有点啰嗦了。# Definition for singly-linked list.# class ListNode:# ...
2019-11-16 23:46:03 102
原创 215. Kth Largest Element in an Array
在数组中找出第Kth大的数。所以要保持一个size=K的min-heap。只要大过这个min,就加入堆里。最后,堆顶,就是第Kth大的数。q[0]等于PEEK。因为第一个元素就是顶。heapq是一个library。它有几个有用的函数:heapq.heapify(array), heappop(), heappush(), heappushpop(), heapreplace – 先pop再pu...
2019-11-16 07:12:29 105
原创 146. LRU Cache
LRU 经典题。花了我好久吭呲吭呲写出来了。还淌了几个坑,比如在evict的时候忘了把key从字典里面去掉。Size 不对了。链表两边的指针没有update对等等。后来发现人也不用你自己写双向链表。还好hash表没有自己写。class LRUNode: def __init__(self, key, val): self.key = key self....
2019-11-15 22:17:49 122
原创 206 reverse linked list
经典题目。可以递归,也可以iterative。class Solution: def reverseList(self, head: ListNode) -> ListNode: p = head q = None while p: r = q q = p ...
2019-11-11 22:03:50 122
原创 24. Swap Nodes in Pairs
注意提前两个节点后,出现了p.next.next.next如果后面只有一个节点时,记得break。# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution...
2019-11-11 06:13:40 110
原创 542. 01 Matrix
这个题目的想法是从martrix 中的0开始,向周边开始+1,如果result里面的值已经小于“这次扩张”的值,就不更新里面的值,这说明有一个0,离这个格子比较近。只有这个格子的值被刷新了,我们才把它放入队列中,让BFS继续。原因是如果它被刷新了,那么它的周边也可能需要刷新。BFS总是使用一个队列。也许是因为队列这个数据结构比较主观,不需要采用更加难理解的递归。import mathfro...
2019-11-08 09:24:01 209
原创 DFS 小结
DFS的题目简单的比如maze,是深度查找一个点。这样在搜索空间中,就可以mark所有的点都使用过,不需要擦去。比较复杂的,是寻找一条线,比如在2维平面查找一个string。而且起始点也不一样。这样在每个查找失败后,就必须擦除刚刚的假设。不然这个格子就被前面的失败搜索占用了。从实现上看,递归实现总是比较通俗的。循环实现需要一个栈,栈本身不是问题,就像二叉树preorder traverse一样...
2019-11-02 23:05:37 174
原创 205. Isomorphic Strings
这道题还算直观,但是有一个tricky的地方就是只检查一边的映射是不行的。例子是"ab" and “aa”第一遍居然fail了,因为扫描ab的时候,它建立了{a:a, b:a}的字典。必须两面都可以才行。所以写了个helper函数。class Solution: def isIsomorphic(self, s: str, t: str) -> bool: # ...
2019-10-30 10:20:40 110
原创 204. Count Primes
这道题我觉得应该是medium。原因是如果你没有学过筛法的话,能从头想出来还是很需要点脑子的。https://zh.wikipedia.org/wiki/埃拉托斯特尼筛法而且这个题有个优化,两层循环中的外层只到int(n0.5),反映在程序里range的上限是int(n0.5)+1为啥是它呢?因为内层循环是从(ii)开始的,所以int(n0.5)*int(n0.5)恰恰小于n。那么为啥从(...
2019-10-30 10:04:25 126
原创 79. Word Search
这道题我写的driver由两层组成。第一层是对match的出发地点做一个loop。第二层是用递归来做漫游。一遍的题目,比如permutation,或者maze,出发地点是定死的,只需要一层就可以了。伪代码如下。for all the positions(r,c) on the board: if search(r,c,word) returns good: return good mo...
2019-10-28 05:30:19 150
原创 51. N Queens
N queens是经典问题。我100%的认为许多年前学过,全部还给老师了。花花酱的视频讲的很好,给个赞!这道题的关键在递归的driver过程。是一行一行的选择。 每一行,call一次search。比较之下,sudoku是每个数,call一次。而且这个问题是有多个解的,把result传进去作为参数。-Goal 目标:当第n行的时候,就找到解了。目标达成。Choice 选择:每一行有n个格子...
2019-10-27 03:46:43 168
原创 37. Sudoku Solver
采用DFS,搜索所有排列。理论上有9的9次方种排列(每行)。一共9行,共9的81次方。但是,排列的位置关系已经定了,因为格子是固定的。在这个基础上,还规定了Sudoku rule,以及固定了很多数字,把搜索空间进一步缩小。以至于人可以用眼和脑在短时间解决。所以我们采用排列的形式:递归,用数组记录used情况,无效状态剪枝,有效状态返回。返回条件(Goal): 当所有的格子都放好的时候。ro...
2019-10-25 21:25:15 161
原创 System design
(1)首先,问下有哪几个CORE FEATURE。因为没有人能够在短时间把所有的系统都搞定。他们关心的地方,才是我们要仔细设计的地方。https://www.youtube.com/watch?v=KmAyPUv9gOY(2)比如tweet功能,需要数据库设计,user table,tweets table等等。primary key,relation等等。one-to-many,一个use...
2019-10-25 02:22:42 273
原创 Data bricks catalyst optimizer
https://databricks.com/blog/2015/04/13/deep-dive-into-spark-sqls-catalyst-optimizer.html
2019-10-24 23:32:56 238
原创 22. Generate Parentheses
产生各种合法的括号组合。比如(()())(),((()))DFS recursion. 括号是成对的,所以dfs函数有两个分支,一个加(,一个加)。class Solution: def generateParenthesis(self, n: int) -> List[str]: result = [] if n>0: ...
2019-10-24 10:23:00 219
原创 spark bookmark
https://github.com/JerryLead/SparkInternals/blob/master/SUMMARY.md
2019-10-24 04:13:33 133
原创 47. Permutations II
首先是 used记得赋值1,然后清零。然后是所有重复数字,人为的给个约束,前面的不用,后面的也不能用。这样化无序为有序。class Solution: def permuteUnique(self, nums: List[int]) -> List[List[int]]: result = [] used = [0 for _ in range(...
2019-10-23 21:28:22 141
原创 784. Letter Case Permutation
这个其实不算combination/permutation,或者说是特例,因为12345不会出现134,145,这种。都是同样长度,按照顺序,也不会有54321所以没有for loop,只有两个固定的DFS recursion。代码如下。如果采用S做pathlist,改变S也行。class Solution: def letterCasePermutation(self, S:...
2019-10-21 20:25:11 134
原创 216. Combination Sum III
注意剪枝条件即可class Solution: def combinationSum3(self, k: int, n: int) -> List[List[int]]: result = [] def dfs(start, pathlist): if len(pathlist) == k and sum(p...
2019-10-20 08:18:34 98
原创 1228. Missing Number In Arithmetic Progression
好奇后面的题是什么样子。所以先试试1228数学题。假设把缺的数填进来,可以精确计算step的大小。然后就是遍历。两个tricky的地方:负数的整除不是truncate。(-3)//2 = -2 WHAT???输入可以是同样的数,这样把任意一个同样的数可以补在任何的位置。所以result要赋值为arr【0】class Solution: def missingNumber(s...
2019-10-20 05:58:22 169
原创 90. Subsets II
这次有重复的元素,找Subset。subset不能有重复的list。所以和前面SUM的做法一样。排序,然后在递归的时候剪枝,如果不是第一个,那么如果和前面的重复,就跳过。递归的部分,就是同一层。。。也是按照花花酱的思路。class Solution: def subsetsWithDup(self, nums: List[int]) -> List[List[int]]: ...
2019-10-20 05:31:34 108
原创 78. Subsets
这里的trick是pathlist的过程,都要加入resultclass Solution: def subsets(self, nums: List[int]) -> List[List[int]]: def dfs(nums, progress, pathlist, result): if progress == len(nums): ...
2019-10-18 21:18:42 132
原创 77. Combinations
经典combinations。用模版class Solution: def combine(self, n: int, k: int) -> List[List[int]]: def dfs(n, k, progress, path, result): if len(path) == k: ...
2019-10-18 11:02:59 115
原创 40. Combination Sum II
这道题和39比,一个差异是每个数字只能用一次。不小心没有看见candidates里面有重复的数字。两种方式去重:if sorted(path) not in result:result.append(sorted(path)) # 这种方法不是太好,因为list的in操作不是最优的。在for循环里面剪枝。因为它们是拍好顺序的。重复的数是在一起的。那么在call递归函数的时候...
2019-10-18 10:28:29 115
原创 39. Combination Sum
Input: candidates = [2,3,6,7], target = 7,A solution set is:[[7],[2,2,3]]花花酱的答案,自己做了一遍https://zxi.mytechroad.com/blog/searching/leetcode-39-combination-sum/两个tricky的地方:ans.append(cur[:]), cu...
2019-10-18 09:10:12 122
原创 17. Letter Combinations of a Phone Number
按照花花酱的schedule来刷题了。先刷Search17 是个combination problem。造一个table,然后把电话的每一位,翻译成各种可能性。基本是3个loop,电话号码一个loop,每个数字的可能性一个loop,和已有的result是一个loop。class Solution: def letterCombinations(self, digits: str) -...
2019-10-17 08:34:18 187
原创 Leetcode bookmarks
MisterBooo Github contains some animations of leetcode.花花酱 talks about how to brush questions several timesIf you don’t know how to do it, read the solution in 5 minutesRead a lot of code/answers...
2019-10-14 07:41:01 123
原创 203. Remove Linked List Elements
Find an element with value ‘val’ in a linked list and remove them.分两个部分。第一个部分把head是val的情况处理掉。第二个部分是用了pq两个指针,检查q。我肯定这个代码还可以简化。class Solution: def removeElements(self, head: ListNode, val: int) ...
2019-10-13 10:10:11 97
原创 202 happy number
class Solution: def isHappy(self, n: int) -> bool: # Going to break a number and try # In each loop, check whether the number has been examined # If yes, then there is a...
2019-10-13 06:06:51 132
原创 算法题收藏夹
算法题收藏夹11个二叉树题目https://blog.csdn.net/qq_36903042/article/details/100798101
2019-10-10 05:00:14 105
原创 数据库的一些link (memSql, MyRocks etc)
memSql是一个分布式数据库。它采用了一些高性能算法,比如无锁数据结构,skip list等来提高性能。也采用了main memory DB技术。对外提供兼容的SQL。也采用了ML调优。听上去和Ignite类似,差别目前不是很清楚。可以参见highscalability.com的文章。https://en.wikipedia.org/wiki/MemSQL...
2019-10-10 04:16:26 721
原创 199. Binary Tree Right Side View
这道题比较tricky,因为从右边看过来,可能不一定是从一棵子树上面连下来的。但是一定是每一层的最右边的节点。所以做一个level based traversal.# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# ...
2019-10-08 09:05:51 118
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人