- 博客(8)
- 收藏
- 关注
转载 单链表反转
看到不错的文章,记录一下:https://www.cnblogs.com/mwl523/p/10749144.html就地反转:思路把当前链表的下一个节点pCur插入到头结点dummy的下一个节点中,就地反转。dummy->1->2->3->4->5的就地反转过程: dummy->2->1->3->4->5 dummy->3->2->1->4->5dummy->4>-3->2-&
2021-02-26 17:18:24 120
原创 RadixSort
马士兵老师的算法课基数排序基数排序算法思想:多关键字排序,按个位十位百位依次排序分配一个0到9的数组count,先从个位排起,把各位按0到9,计数排序;然后排十位…直到排到最高位每次count数组都要归零,一共循环原数组中最大数的位数(如数组里最大是三位数,就循环三次),需要定义一个函数寻找最高位。时间复杂度:O(n*k),k代表了几位数空间复杂度:O(n)寻找最大值的位数:int maxlength(vector<int>& arr) //计算最大值的长
2021-02-25 21:18:40 109
原创 CountSort
马士兵老师的算法课3.计数排序3.计数排序算法思想:使用的限定范围为数据量大但范围小时 开辟两个数组,result负责记录结果,count负责记录每个index出现的个数1.遍历整个数组,得到count计数数组;2.count[i]=count[i-1]+count[i],得到累加数组,目的是记录该index的最后一个的下标;3.从末尾向前遍历原数组,按照累加数组,将对应的数放到result的index-1上代码:class Countsort{public: vector
2021-02-24 20:43:23 92
原创 QuickSort
马士兵老师的算法课2.快速排序2.快速排序算法思想:找一个基准轴(通常是最后一个),比它小的都排在前面,比它大的都排在后面,按左右两个分区,把基准轴放在最后一个比它小的位置的后面,继续找轴,继续排。left从头往后找,right从倒数第二个位置开始往前找,left遇到比pivot小的就++,right遇到比pivot大的就–,如果left<right,left遇到比pivot大的就和right交换。核心partition:int partition(vector<int>
2021-02-24 15:12:49 73
原创 马士兵老师的算法课
排序1.归并排序1.归并排序算法思想:递归合并简称归并merge+核心sort不断地分成两个子数组,i开头和j开头,谁小谁挪下来放进temp数组里,然后把i或j剩余的接到temp结尾。sort部分:void sort(vector<int>& arr,int left,int mid,int right) { vector<int> temp(right-left+1); int i=left,j=mid+1,k=0
2021-02-23 18:01:34 454
原创 剑指offer刷题之——动态规划
动态规划1.连续数组的最大和1.连续数组的最大和题目描述:输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n)。思路:典型的动态规划。dp[n]代表以当前元素为截止点的连续子序列的最大和,如果dp[n-1]>0,dp[n]=dp[n]+dp[n-1],因为当前数字加上一个正数一定会变大;如果dp[n-1]<0,dp[n]不变,因为当前数字加上一个负数一定会变小。使用一个变量max记录最大的dp值返回即
2021-02-20 12:18:15 137
原创 剑指offer刷题之——链表
链表1.删除链表中重复的结点1.删除链表中重复的结点题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路:非递归:1 . 首先添加一个头节点,以方便碰到第一个,第二个节点就相同的情况2 .设置 p1 ,p2 指针, p1指针指向当前确定不重复的那个节点,而p2指针相当于工作指针,一直往后面搜索。代码:cla
2021-02-08 14:21:41 107
原创 剑指offer刷题之——数组
数组1.斐波那契数列2.旋转数组的最小数字3.数组中出现次数超过一半的数字4.调整数组顺序 使奇数在前,偶数在后1.斐波那契数列题目描述:斐波那契数列公式为:f[n] = f[n-1] + f[n-2], 初始值f[0]=0, f[1]=1,目标求f[n]思路1:普通递归版求法,这种方法通常和汉诺塔一起被放在课本的递归教学部分,应该是面试官不希望看到的算法。int Fibonacci(int n) { if (n==0 || n==1) return n; return Fibo
2021-02-03 15:22:43 138
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人