自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 用矩阵运算 + 快速幂处理斐波那契数列问题

定义斐波那契数列问题:定义 a0=1a0=1, a1=1a1=1, an=an−1+an−2an=an−1+an−2,求 anan 是多少。为了避免考虑整数溢出问题,我们求 an%pan%p 的值,p=109+7p=109+7。快速幂算法的模板可以参考这里。可以先利用矩阵运算的性质将通项公式变成幂次形式,然后用平方倍增(快速幂)的方法求解第 nn 项。首先我们定义向量Xn=[an−1],边界:X1=[a1a0]Xn=[an−1],边界:X1=[a1a0]然后我们可以找出矩阵:A=[11

2020-05-19 13:20:05 277

原创 partition函数模板

Remove Duplicates from Sorted Array 题解Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length.Do not allocate extra space for another array, you must do this by modifying the input arra.

2020-05-17 11:41:20 258

原创 浅谈排序算法稳定性

排序算法稳定性的概念假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。为什么需要重视排序算法稳定性当原本的初始顺序存在意义时,为了在二次排序的基础上保持原有排序的意义,我们必须考虑算法的稳定性。比如我们把高三年级所有的学生的期末考试先按照班级序号从小到大排序,再按照学生的成绩从低到高排序,此时排序之后的结果不仅班级从小到大依次排序

2020-05-16 17:38:53 183

原创 堆应用实例

一个数据流中,怎么样做到随时可以取得中位数题目描述:有一个源源不断地吐出整数的数据流,假设你有足够的空间来保存吐出的数。请设计一个名叫MedianHolder的结构,MedianHolder可以随时取得之前吐出所有树的中位数。要求:1.如果MedianHolder已经保存了吐出的N个数,那么任意时刻将一个新的数加入到MedianHolder的过程中,时间复杂度O(logN)。2.取得已经吐出的N个数整体的中位数的过程,时间复杂度O(1).减堆操作: * //1.将堆顶位置上的数弹到

2020-05-10 21:29:13 196

原创 快速搞定经典“快排”与“随机快排”

快排算法快排其实是在荷兰国旗问题的基础上发展出来的,不知道荷兰国旗问题的请看我上一篇博文,它分为3步:分割、交换、递归以下就是关于快排的详细代码package Sort_learning;public class QuickSort { public static void quickSort(int[] arr, int L, int R) { //只有当L<R时,才排序,否则直接退出。 if(L < R) { swap(arr, L + (int)(Math.ran

2020-05-10 10:25:42 180

原创 河南国旗问题

题意给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。要求额外空间复杂度为O(1),时间复杂度为O(N)代码如下:package Sort_learning;public class NetherlandsFlag { public static int[] partition(int[] arr, int L, int R, int num) { //区间【L,R】是不确定的,即为待定区域,num为你想要用来分隔

2020-05-09 20:59:28 392

原创 如何写一个对数器

写一个比较对数器:1.有一个你想要测得方法a;2.实现一个绝对正确但复杂度不好的方法b,3.实现一个比对方法4.把方法a和方法b比对很多次来验证方法a是否正确5.如果有一个样本是的比对出错,打印样本分析是哪个方法出错6.当样本数量足够多且比对依然正确时,可以确定方法a已经正确package Sort_learning;import java.util.Arrays;import javax.annotation.processing.Generated;import javax.

2020-05-08 19:42:09 255

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除