- 博客(7)
- 收藏
- 关注
原创 Leetcode :371. 两整数之和
题目:不能使用 “+”、“-”运算符计算两整数的和,整数范围在int的范围内分析:一般都是使用位算符。使用位运算这需要转换为二进制如果每一位的值不同则m + n = m^n 。如,m = 4, n =3,则m=100, n = 11 如果每一位的值都相同即m =n = (n<<1);所以对于m和n。我们把m和n分解成上面的两种情况:分解成相同位组成的数字和不同位组成的数字比如m = 6 = 1010 , n = 1001,后两位不同, m分解成1000 + 10...
2021-09-26 06:12:13 73
原创 约瑟夫环问题
约瑟夫环问题问题的大意是:一开始n个人围城一个环,编号从1到n,从1开始报数,报到m的人出局,后面的人继续从1开始报数,问最后剩下的人的编号是多少?暴力解法最先想到的就是暴力接法,即从1开始数到m,第m的人标记为出局,中间出局的人跳过,则经过n-1轮只剩下一个人就是结局。这种算法时间复杂度为O(nm),空间复杂度为O(n)。非暴力解法题目编号从1开始且从1开始报数,为了方便计算我们假设编号和报数都从0开始,到m-1的人出局,只需最后结果加1就可以了,我们思考一下,假设经过一些轮次后还剩i个人
2021-03-22 15:42:48 618
原创 栈和队列
题目一两个栈实现队列使用两个栈,一个栈专门add数据,一个栈专门poll数据public class MyQueue<T> { private Stack<T> addStack = new Stack<T>(); private Stack<T> popStack = new Stack<T>(); pu...
2020-02-19 19:57:16 127
原创 01背包
01背包是一个很经典的动态规划题目,其大意是,有一堆东西(我们假设为水果),每个水果都有自己的价值v和重量w,我们又一个背包只能装k重量的东西,问题我们能用这给背包能装下最多的价值为多少?所谓的01是指选择获取不选这里我们假设:1. 有N个水果,v[i]表示第i个水果的价格。2. w[i]表示第i个水果的重量。3. k表示背包的承重。动态规划实质是以空间换时间,关键点在于怎么建立起模型,...
2020-02-19 17:15:57 100
原创 redis数据结构之字典
字典就相当于一个hashmap,了解字典需要从下面几个问题开始1.字典的结构2. 字典的扩容的机制3. 扩容时的请求处理4. 字典是怎么添加值的字典的结构typedef struct dictEntry { void *key; union { void *val; uint64_t u64; int64_t s64; ...
2020-01-09 18:45:28 125
原创 线程池的拒绝策略
当线程池中没有空闲的线程且阻塞队列满了,或者线程池不是RUNNING状态时,增加任务时执行拒绝策略。线程池总共有四种拒绝策略,分别为:CallerRunsPolicy、AbortPolicy、 DiscardPolicy 、DiscardOldestPolicy。默认AbortPolicy策略一、CallerRunsPolicy 当前线程直接执行,既然线程池没有空闲线程,那么就我自...
2019-06-26 17:58:08 560
原创 数组中所有的元素都出现N次,只有一个出现M次,请这个出现M次的元素。
数组中所有的元素都出现N次,只有一个出现M次,请这个出现M次的元素。这种类似问题在面试中经常会问到,下面总结一下相关题目,这种问题大多数情况下都是使用位运算来解题。题目一:一个数组中所有元素都出现2次,只有一个元素出现一次,请求这个元素??分析:使用位运算怎么才能把2次的数据消除,只保留出现一次的元素,所以可以使用^ 运算public int getOnceNumber(...
2019-01-04 16:30:52 861
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人