http://algorithm.yuanbin.me/zh-hans/index.html…
刷题备忘录,for bug-free 招行面试题--求无序数组最长连续序列的长度,这里连续指的是值连续--间隔为1,并不是数值的位置连续 问题: 给出一个未排序的整数数组,找出最长的连续元素序列的长度. 如: 给出[100, 4, 200, 1, 3, 2], 最长的连续元素序列是[1, 2, 3, 4].返回它的长度:4. 你的算法必须有O(n)的时间复杂度 . 解法: 初始思路 要找连续的元素,第一反应一般是先把数组排序.但悲剧的是题目中明确要求了O(n)的时间复杂度,要做一次排序,是不能达…
请找出有向图中弱连通分量.图中的每个节点包含 1 个标签和1 个相邻节点列表.(有向图的弱连通分量是任意两点均有有向边相连的极大子图) 将连通分量内的元素升序排列. 在线评测地址:https://www.lintcode.com/problem/find-the-weak-connected-component-in-the-directed-graph/?utm_source=sc-bky-zq 图模型说明: Graph For example: {1,2,4#2,1,4#3,5#4,1,2#…
[题目描述] 在 Consistent Hashing I 中我们介绍了一个比较简单的一致性哈希算法,这个简单的版本有两个缺陷: 增加一台机器之后,数据全部从其中一台机器过来,这一台机器的读负载过大,对正常的服务会造成影响. 当增加到3台机器的时候,每台服务器的负载量不均衡,为1:1:2. 为了解决这个问题,引入了 micro-shards 的概念,一个更好的算法是这样: 将 360° 的区间分得更细.从 0~359 变为一个 0 ~ n-1 的区间,将这个区间首尾相接,连成一个圆. 当加入一台…
n个人按顺序围成一圈(编号为1~n),从第1个人从1开始报数,报到k的人出列,相邻的下个人重新从1开始报数,报到k的人出列,重复这个过程,直到队伍中只有1个人为止,这就是约瑟夫问题.现在给定n和k,你需要返回最后剩下的那个人的编号. 1<=n<=1000, 1<=k<=100 在线评测地址:LintCode 领扣 样例1 输入: n = 5, k = 3 输出: 4 解释: 求解过程: 原队列 :1 2 3 4 5 第一轮: 1 2 4 5 其中 3 出列 第二轮: 2 4 5 其…
[题目描述] 给一个非空字符串 s,你最多可以删除一个字符.判断是否可以把它变成回文串. 在线评测地址: https://www.lintcode.com/problem/valid-palindrome-ii/?utm_source=sc-bky-zq [样例] 样例 1: 输入: s = "aba" 输出: true 解释: 原本就是回文串 样例 2: 输入: s = "abca" 输出: true 解释: 删除 'b' 或 'c' 样例 3: 输入: s =…
编写一个 StockSpanner 类,它收集某些股票的每日报价,并返回该股票当日价格的跨度. 今天股票价格的跨度被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今天). 例如,如果未来7天股票的价格是 [100, 80, 60, 70, 60, 75, 85],那么股票跨度将是 [1, 1, 1, 2, 1, 4, 6]. 调用 StockSpanner.next(int price) 时,将有 1 <= price <= 10^5. 每个测试用例最多可以调用 100…
为了装修新房,你需要加工一些长度为正整数的棒材 sticks. 如果要将长度分别为 X 和 Y 的两根棒材连接在一起,你需要支付 X + Y 的费用. 由于施工需要,你必须将所有棒材连接成一根. 返回你把所有棒材 sticks 连成一根所需要的最低费用.注意你可以任意选择棒材连接的顺序. ​​1≤sticks.length≤10^4 ​​1≤sticks[i]≤10^4 在线评测地址:https://www.lintcode.com/problem/minimum-cost-to-connect…
给一个单词s,和一个字符串集合str.这个单词每次去掉一个字母,直到剩下最后一个字母.求验证是否存在一种删除的顺序,这个顺序下所有的单词都在str中.例如单词是’abc’,字符串集合是{‘a’,’ab’,’abc’},如果删除的顺序是’c’,’b’,那么’abc’,’ab’,’a’都在集合中,就符合条件.输出这个组合是否符合条件. 1<=|str[i]|,|s|<=30 1<=str中字符串的个数<=100 在线评测地址:https://www.lintcode.com/probl…
现在给你两个长度均为N的整数数组 A 和 B. 当(A[0]+...A[K-1]),(A[K]+...+A[N-1]),(B[0]+...+B[K-1]) 和 (B[K]+...+B[N-1])四个和值大小相等时,称索引K是一个公平索引.也就是说,索引K 可以使得A, B 两个数组被分成两个非空数组,这四个子数组的和值相等. 例如,数组A = [4,-1,0,3],B = [-2,5,0,3],那么索引 K = 2是公平的,子数组的和相等:4+(-1) = 3; 0+3 = 3; -2 + 5…