数据结构
文章平均质量分 61
qq_23204557
这个作者很懒,什么都没留下…
展开
-
语音识别的JavaSDK与文本相似度计算
语音识别原创 2022-09-29 14:42:45 · 711 阅读 · 0 评论 -
判断有向图是否有环
题目:LeetCode207. Course Schedule。本质就是遍历时每个点的状态会在这三种状态中变化:未访问(未发现)、已发现(刚开始对其dfs时)、已结束(即将退出其dfs时)。有环等价于有回边(backEdge),而回边的特点是指向已发现而还未结束的点。原创 2021-04-27 01:31:54 · 598 阅读 · 0 评论 -
阿里云面试
岗位链接电话一面工作内容以及挑战你用的分布式任务调度系统中,是怎么分配计算任务的?分布式CAP理论。为什么不能同时满足C和A?答案:分布式CAP定理,为什么不能同时满足三个特性?之 “二、CAP定理的证明”。问:有哪些分布式的算法?参考答案:Paxos,Raft,Zab从你的理解谈一下RPC,RPC解决了什么技术场景的问题,以及它的原理。RPC与HTTP两者的异同。Kafka对其它MQ的优势。各自能达到什么性能量级?答:单机吞吐量,ActiveMQ与RabbitMQ均为万级,原创 2021-04-17 01:48:17 · 132 阅读 · 1 评论 -
用ArrayDeque比用LinkedList更优于实现Deque?
问题诱因:https://leetcode.com/submissions/detail/481019484/中,Deque<String> l1 = new ArrayDeque<>(Arrays.asList(sentence1.split(" "))); 用到了ArrayDeque而不是LinkedList。为什么?LinkedListArrayDeque数据结构带头尾结点的双向链表长度为2的幂的环形数组1读取效率Most ArrayDeq原创 2021-04-16 00:50:51 · 672 阅读 · 1 评论 -
《专题三分布式系统》之《第三章 集中式缓存Redis》之 《第四节 Memcached》
《3.4.1 Memcached协议》Memcached相对于Redis的特点:没有redis的复杂数据结构;多线程(Redis6.0之后有多线程的io);CAS?《3.4.2 Memcached工作原理及优缺点》LIbevent库,IO多路复用Memcached vs Redis:比较项MemcachedRedis多线程单线程(6.0以前)高可靠官方支持主从,哨兵,集群等数据持久化更完备存储语义只支持String更丰富数据原创 2020-12-09 18:03:35 · 175 阅读 · 0 评论 -
why does dp not work?
在leetcode上刷到一题,很有趣,值得一记:1091. Shortest Path in Binary Matrix。简单来说就是求一个矩阵从左上角到右下边的最短距离:此题和leetcode上的另外一题(题号忘了,以下简称为题1)极为相似。问题都一样,只是路径成立的条件有区别:本题可以从一点周围的所有8个点连过来,而题1只可以从一点的左上、上方、左方三个方向的点连过来。题1可以很快用dp解出,所以我的本能反应也是用dp来解此题。然而编完程后发现程序报StackOverFlowError, 陷入了无限递原创 2020-11-22 02:54:46 · 108 阅读 · 0 评论 -
58,OPPO等面试
58同城:怎样保证消息队列里的消息不被重复消费?SHOPEE:写数据库,是先写内存,还是先写硬盘?为什么? 我总结了两点原因:1,速度差异。2,以硬盘为最终保存copyonwrite思想讲讲兴业银行信用卡:有JVM调优的经验吗你们项目的高可用架构是怎么设计的 nginx做负载均衡()…OPPO:如采用先改mysql再失效redis的策略,若删缓存失败...原创 2019-10-22 00:11:58 · 125 阅读 · 0 评论 -
如何对map的entry进行排序
参考https://leetcode.com/problems/sort-characters-by-frequency/import java.util.Comparator;import java.util.HashMap;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import java...原创 2019-07-07 00:31:09 · 1531 阅读 · 0 评论 -
01背包与完全背包
如https://www.cnblogs.com/moderateisbest/p/9465717.html:0—1背包:dp[ i+1 ][ j ] = max ( dp[ i ][ j ], dp[ i ][ j - ci ] + wi );完全背包:dp[ i+1 ][ j ] = max ( dp[ i ][ j ], dp[ i +1 ][ j - ci ] + wi );所以如h...原创 2019-08-24 03:02:00 · 164 阅读 · 0 评论 -
用并查集解 kick start的Wiggle Walk
kick start c轮第一题Wiggle Walk,受此处的启发,发现用可4个并查集来解,注意两点:1,我是用map而非数组来实现并查集的,因为担心上次内存溢出的问题重现;2,普通并查集不强调根的位置,此处不相同,根的位置代表了此段的极限,合并时应注意。ac的代码在Attempt 36 Jul 28 2019, 01:09 private Point findRoot(Map<P...原创 2019-07-28 01:43:31 · 248 阅读 · 0 评论 -
求幂算法及其背后的离散数学
参考:http://ju.outofmemory.cn/entry/158553此文由快速求幂算法讲起,讲到了其中的半群等离散数学的概念。并由此仿造出了其他api. 文章中提到“如果想学习这个算法的一些用法或者想知道更多这个算法背后的理论,请查阅这本叫做《Elements of Porgramming》,这本书中文名字叫做编程原本”。我有些兴趣,但是考虑到目前时间紧,暂时不看,先存在这里...原创 2019-07-22 17:00:11 · 474 阅读 · 0 评论 -
力扣杯决赛第3题 寻找一个字符串中的最长重复子串(后缀数组)
原题在:https://leetcode-cn.com/contest/college/2019-spring/problems/longest-repeating-substring/参考https://blog.csdn.net/u012114090/article/details/81669021可使用后缀数组,问题转化为求后缀数组的最长前缀,通过的代码为: import java.u...原创 2019-04-21 19:03:18 · 426 阅读 · 0 评论 -
区间最值查询RangeMaximumQuery google codejam 2019 round1b第三题
RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干次询问RMQ(i,j),返回数列A中下标在区间[i,j]中的最小/大值。存在一种比较高效的ST算法解决这个问题。ST(Sparse Table)算法可以在O(nlogn)时间内进行预处理,然后在O(1)时间内回答每个查询。java代码:`int[] A = new...原创 2019-04-30 05:05:20 · 338 阅读 · 0 评论 -
线段树 Segment Tree
最基本的来自https://leetcode.com/problems/range-sum-query-mutable/class NumArray { int[ ] nums = null; int[ ] tree = null; int n = 0; public NumArray(int[] nums) { this.nums = num...原创 2019-05-26 16:54:25 · 138 阅读 · 0 评论 -
基数排序
https://leetcode.com/problems/maximum-gap/用java实现了一下,采用LSD(最低位优先法):(未考虑有负数的情况) private static void radixSort(int[] nums) { int max = nums[0]; for (int i = 1; i < nums.length; ...原创 2019-07-07 02:48:02 · 91 阅读 · 0 评论 -
最小\大栈以及最小\大队列 单调队列
此题也可用单调队列来解:https://leetcode.com/submissions/detail/248883712/ 理由是最终队列中包括的所有元素,都是从它的左边元素(exlusive)到它这一段中,用时最长的 (官方提供的默认解法时间复杂度与我相同)。当然此处的单调队列与上面的略有不同,在于。但是后面我发现了一种更简练而且效率更高的方法:单调队列(我自己的命名,可以平均线性时间得到最大\小值)。结合最小\大栈的思路,和两个栈构成一个队列的思路完成。可在常数时间内得到栈的最值。原创 2019-07-19 01:36:46 · 255 阅读 · 0 评论 -
运用排列组合直接解62. Unique Paths
题目:https://leetcode.com/problems/unique-paths/典型思路是用dp来解,时间,空间均为O(n): public int uniquePaths(int m, int n) { int[] ans = new int[n]; Arrays.fill(ans,1); for(int i=1;i<m...原创 2019-07-20 02:40:57 · 143 阅读 · 0 评论 -
求两侧最近的更小点,用单调栈解Largest Rectangle in Histogram和trapping-rain-water
参考了两种解法,最后用以中间的某点为高度,快速分别求左右边最近的比它高的点为整体思路,以最大栈为实现方式,实现了: public int largestRectangleArea(int[] heights) { int max = 0; Stack<Integer> maxst = new Stack<Integer>() { //简化版最大栈,直观表现为单调不...原创 2019-07-25 18:48:57 · 142 阅读 · 0 评论 -
两种素数筛法
cd原创 2019-07-21 22:12:09 · 130 阅读 · 0 评论 -
dfs与回溯算法
1,区别不在于回溯,因为dfs也会回溯,而是dfs会将已经访问过的点标记为不可再次连接,从而使得可搜索路径越来越少。使用邻接链表的dfs的时间复杂度为V+E2,如果在寻径中保留stack, 我们会发现dfs只会找到一条a到b的路径,而回溯法可以找到所有的。...原创 2019-04-07 18:33:38 · 5068 阅读 · 1 评论