
Alg
文章平均质量分 69
algorithms
好吃吗
离管理层还差两级 https://github.com/xhd2015
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
买卖股票的时机
简介买卖股票系列的问题,注意思考点是固定某一天卖出,可以得到子问题。121. 买卖股票的最佳时机 (Easy)https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/题目:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这原创 2021-11-13 01:10:44 · 264 阅读 · 0 评论 -
线段树-Segment Tree
问题:给定一系列区间I,一个点q,找出所有包含q的区间问题来源:http://www.cs.nthu.edu.tw/~wkhon/ds/ds10/tutorial/tutorial6.pdf线段树https://en.wikipedia.org/wiki/Segment_tree假设有n个区间,所有的区间的端点(包括左端点和右端点)至多有2n个。将这些端点排序,构成基本区间(elementary interval):(-∞,p1), [p1,p1],(p1,p2),[p2,p2],(p2,p3),原创 2021-11-07 22:37:12 · 204 阅读 · 0 评论 -
堆排序和优先级队列
堆堆是一种建立在数组之上的数据结构,A[i]的左右子结点是A[2*i+1], A[2*i+2],且满足A[i]是这3个数中最小的(或最大的那个)。heapify过程描述了如何将某个结点从i处“下沉”到合适的位置:# 最大堆heapify(A,i,heapSize): # 也可以叫做 sink(A,i,heapSize), java优先级队列的命名就是sink L, R = 2*i+1, 2*i+2 largest = i if L < heapSize &&a原创 2021-11-07 22:34:55 · 124 阅读 · 0 评论 -
并查集算法
不相交集合makeSet(v)返回一个单个元素的集合makeSet(x): x.p = x x.rank = 0union(x,y): link(findSet(x),findSet(y))# link优先选择rank较小的粘贴到rank较大的根上,避免树变深link(x,y): if x.rank > y.rank: y.p = x # 注意:x.rank没有增加 else: x.p = y if原创 2021-11-07 22:34:39 · 183 阅读 · 0 评论 -
跳表(skiplist)及redis实现
解决的问题基本结构跳表是一个基于概率构造的数据结构。跳表由层构成,第i层的元素在第i+1层出现的概率是一个固定值:p(通常是1/2或1/4).跳表的最底层是一个排序的链表。[4] 30 NIL[3] 30 50 NIL[2] 30 50 70 NIL[1]原创 2021-08-30 23:04:25 · 167 阅读 · 0 评论 -
【OfferX】Dubbo
原创 2020-03-24 21:39:23 · 113 阅读 · 0 评论 -
【OfferX】Kafka
原创 2020-03-24 21:38:52 · 143 阅读 · 0 评论 -
【OfferX】Redis
分布式锁原创 2020-03-24 21:38:19 · 248 阅读 · 0 评论 -
【OfferX】TODO
待实现扫描线段树,求矩形面积,周长。TopCoder - RMQ - 不同实现TODO区间729. My Calendar I(Medium)思路:使用TreeSet记录插入顺序,每次要插入新的区间时,判断该区间是否已经出现状态:错误Cases:["MyCalendar","book","book"][[],[33,41],[33,42]]["MyCalendar","boo...原创 2020-03-08 23:37:41 · 229 阅读 · 0 评论 -
【OfferX】如何成为一名合格的面试官
面试的目的面试的主要目的是考察面试者是否符合工作岗位的要求。面试题字符串版本比较165. Compare Version Numbers(Medium)这一题我自己做也花了一个多小时,为什么呢?这题目并不能,难就难在要充分理解题意,尝试构造不同的测试用例:有0开头的全是.的数字超过long的此题能够充分考察应聘者的思维是否全面。...原创 2020-03-08 18:52:34 · 206 阅读 · 0 评论 -
【OfferX】字符串
回文最接近的回文数字(TODO更正答案)题目:564. Find the Closest Palindrome(Hard)给定一个数字n,找到最接近n的回文数,如果有两个,返回较小的一个。解:设当前数字是xyz, 最高位只能是x+1, x, x-1,并且当它是x+1, x-1时,中间的值都是确定的,x+1时必然是(x+1).000.(x+1), x-1时必然是 (x-1).999.(...原创 2020-03-08 16:53:19 · 213 阅读 · 0 评论 -
【OfferX】面经总结
2020年春季头条(转自cnblogs)1面(周日晚20点,视频面试)1.介绍一下自己呗2.volatile知道吗?3.Java里面类型擦除知道吗?4.编程题:链表的奇数位升序,偶数位降序,排序该链表4.你还有什么想问我的?问:团队目前是什么情况答:100人的技术团队问:业务概况答:国内前2问:你目前主要负责的是什么内容答:问:你是在深圳吗?答:北京,可能之后会进行远...原创 2020-03-07 22:35:10 · 190 阅读 · 0 评论 -
【OfferX】矩形和矩阵
1.矩阵的变换题目:48. Rotate Image将一个矩形顺时针翻转90°解:先将矩形按行翻转,然后进行mirror操作class Solution { public void rotate(int[][] matrix) { reverse(matrix); mirrorRotate(matrix); } publ...原创 2020-03-04 01:03:50 · 492 阅读 · 0 评论 -
【OfferX】二分索引树、线段树和矩形
1.二进制索引树(树状数组实现)二进制性质:x&(-x)表示单独提取x的最低位1性质1:任何一个节点到达父级节点的路径只有一条。这保证了当一个节点更新时,不会更新父节点两次。性质2:一个节点往上可以遍历所有父节点,因此更新的时候可以保证更新所有受影响的点;但一个节点往下遍历则会跳过它的所有子节点,而只经过所有比它小但是不是其子节点的兄弟节点。也就是说,节点在往下遍历的过程中只遍历那些...原创 2020-03-03 02:41:48 · 186 阅读 · 0 评论 -
【OfferX】链表
1.排序链表题目给定一个链表,其第1,3,5,7 …位元素,即奇数位元素升序,2,4,6,8…位元素,即偶数位元素降序,返回排序后的链表解:首先将链表的偶数位元素提取出来,然后进行reverse操作,再进行归并排序#2....原创 2020-03-01 22:11:35 · 188 阅读 · 0 评论 -
【OfferX】二叉树
序列化和反序列化二叉树题目:297. Serialize and Deserialize Binary Tree解1:使用[]来标记树的范围,遇到null节点时,放置空的括号对[]以便能够区分左右子树/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeN...原创 2020-03-01 16:47:09 · 121 阅读 · 0 评论 -
算法问题:排列
下一个排列题目:31. Next Permutation解:策略:查找最长倒序的后缀,然后将这个后缀与前面的数字交换,翻转过来,就是下一个序列。class Solution { public void nextPermutation(int[] nums) { // find i such that nums[i]<nums[i+1] from nums.len...原创 2020-03-01 12:13:45 · 219 阅读 · 0 评论 -
【OfferX】决策问题
猜数-Minmax题目:375. Guess Number Higher or Lower II给定数字x在1到n之间,每次猜x的值,可以知道较大或较小,如果没有猜中,则需要付出x元的代价,求保证猜中的代价解:其实是最坏情况下的最优决策问题,转移方程:f(i,j) = until i>=j min(x+max{f(i,x-1),f(x+1,j)}) for x in [i,j]...原创 2020-02-29 01:08:44 · 348 阅读 · 0 评论 -
二分查找,以及类似问题
二分查找关键点:二分查找的最终步骤会经历2个元素,1个元素,0个元素的阶段,利用这几个阶段确定最终的下标。题目:在一个有序数组中查找某个元素的比较序列伪代码binary-search(A,e): p=0,r=A.length-1 while p<=r: m = (p+r)/2 if A[m] > e: r ...原创 2020-02-29 01:07:21 · 373 阅读 · 0 评论 -
【OfferX】数组
单调栈题目:84. Largest Rectangle in Histogram(Hard)解:使用一个单调非递减的栈记录,每当遇到更小的元素时,说明左侧的所有元素不可能再跨过这个边界,因此它们的面积已经确定。确定的面积等于当前下标i减去元素最左侧的边界。class Solution { public int largestRectangleArea(int[] heights) ...原创 2020-02-27 00:36:58 · 176 阅读 · 0 评论 -
【OfferX】二进制
1.对于较长的二进制数据使用BitSet题目:1178. Number of Valid Words for Each Puzzle给定两个字符串数组A和B,如果对B中的一个字符串p,A的所有字符串w都满足如下条件:I. w的所有字符都出现在p中II. p的第一个字符出现在w中对B中的每一个字符串B[i],求A中满足上述条件的数目使用java.lang.BitSetclas...原创 2020-02-23 02:01:21 · 316 阅读 · 0 评论 -
【OfferX】状态转移相关 + 动态规划
1.变成回文串的最少插入次数题目:1312. Minimum Insertion Steps to Make a String Palindrome状态转移: f(i,j) = min{f(i+1,j), f(i,j-1)}class Solution { int n; int[][] dp; String s; public int minInsertion...原创 2020-02-22 12:03:26 · 287 阅读 · 0 评论 -
【OfferX】数学题目
1.丑数题目:2.完美数题目:一个数等于它的除其自身外所有因子的和,比如28 = 1 + 2 + 4 + 7 + 14,给定一个数,判断其是否是完美数3.自除数题目:一个数的每一位都能整除其自身,求n到m的所有自除数4.最小的全1基数题目:将一个数n以r为基数计算,并使其每一位都是1.求最小的基数.5.使用两个杯子量出指定体积的水题目:两个杯子的容器是m,n,每次可将杯子装满或情...原创 2020-02-20 23:06:14 · 1143 阅读 · 0 评论 -
【OfferX】配置中心的设计
题目描述在生产环境,我们常常要存储一些像服务参数、功能开关之类的键值。传统的做法是把配置都写到文件里,然后同步到线上每台机器上。随着机器变多,配置文件变得难以管理,并且容易出现不一致的情况。我们希望设计一个配置服务来解决这个问题。统一配置服务可能会存在以下问题:由于是非常核心的服务,如果存在单节点问题对服务可用性影响非常大;线上可能读取非常频繁,尽可能提供高性能的服务同时,也要考虑横向扩容能力...原创 2020-02-10 23:20:47 · 510 阅读 · 0 评论 -
【OfferX】常见题目
排序二叉树1.前序,中序,后序遍历确定位置设计模式1.抽象工厂模式算法1.一系列数据中有一个数出现了k次,求这个数原创 2020-02-09 00:16:53 · 792 阅读 · 0 评论 -
快速排序算法
经典算法伪代码:quick-sort(A,p,r): if p<r: index=partition(A,p,r) quick_sort(A,p,index-1) quick_sort(A,index+1,r)partition(A,p,r): pv = A[r] i = p - 1 for j = p ...原创 2020-02-08 23:48:04 · 561 阅读 · 0 评论