数据结构与算法
常见算法
tianyue712
这个作者很懒,什么都没留下…
展开
-
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 · 76 阅读 · 0 评论 -
约瑟夫环问题
约瑟夫环问题问题的大意是:一开始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 · 623 阅读 · 0 评论 -
栈和队列
题目一两个栈实现队列使用两个栈,一个栈专门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 · 131 阅读 · 0 评论 -
01背包
01背包是一个很经典的动态规划题目,其大意是,有一堆东西(我们假设为水果),每个水果都有自己的价值v和重量w,我们又一个背包只能装k重量的东西,问题我们能用这给背包能装下最多的价值为多少?所谓的01是指选择获取不选这里我们假设:1. 有N个水果,v[i]表示第i个水果的价格。2. w[i]表示第i个水果的重量。3. k表示背包的承重。动态规划实质是以空间换时间,关键点在于怎么建立起模型,...原创 2020-02-19 17:15:57 · 107 阅读 · 0 评论