- 博客(12)
- 收藏
- 关注
原创 赋值运算符函数和单例模式
如果只是简单的将拷贝对象的值赋值到被拷贝对象中,那么两个对象的指针指向同一块内存,内存释放时容易发生多次释放而导致出问题,对此选择的方式是深拷贝,也就是将当前对象原来的值释放,重新分配一块新的内存。上面函数欠缺部分在于异常处理,如果new失败会造成不好的后果,因此可以考虑另一种方案,创建一个临时实例,和当前变量交换即可。同时需要注意,如果两个实例是同一个的话,直接返回实例就好,否则释放之后再进行拷贝会因为找不到实例的值而出错。有实例时直接返回该实例,没有实例时创建实例。时,我们才需要加锁创立新的实例,
2024-10-15 17:24:58 694
原创 算法专题:数学知识
求a的b次幂时,本来是要将a乘b次,那么如何降低乘的次数呢,有一个性质,所有的十进制数是可以由二进制数表示的,那么a需要乘的字数自然就降低了。第一反应,暴力做法,a的b次幂要怎么求,要怎么取模,如果想直接把a的b次幂表示出来,所花的时间必然会过长导致超时,所以猜测这题的考虑点在如何在求a的b次幂时降低它的时间复杂度。也就暂时不考虑取模。相乘的形式,每个底数都是不同的,然后对于每个a的n次方,a可以取0-n有n+1种方式,同理后面为m+1,它们各部分相乘的积也一定是S的因数,所以个数就是指数+1的乘积了。
2023-10-28 15:13:37 87 1
原创 算法基础课(Acwing)
/lowbit可以截取一个二进制数的最后一个1开始后的所有数int num;cin >> num;res++;return 0;
2023-09-14 17:39:41 350 1
原创 Huffman树(上)
规定左分支代表0右分支代表1,则从根结点到叶子结点所经过的路径分支组成的0和1的序列便为该结点对应字符的编码,这就是哈夫曼编码。也就是在问题求解时,总是做出当前看来最好的选择,也就是说,不从整体最优加以考虑,而只是得到某种意义的局部最优解,但是此时的局部最优解恰好等于全局最优解。哈夫曼树的构造算法也就是找到每次权值最小的子树构造新的二叉树,且该二叉树的结点为其左右结点根的权值之和。从树的根结点到某叶子结点之间的路径长度和该结点上权的乘积称为该结点的带权路径长度。《数据结构教程》李春葆。
2023-06-06 01:52:29 272 2
原创 1054距离相等的条形码
在一个仓库里,有一排条形码,其中第 i 个条形码为 barcodes[i]。请你重新排列这些条形码,使其中任意两个相邻的条形码不能相等。你可以返回任何满足该要求的答案,此题保证存在答案。
2023-05-14 11:29:18 86
原创 2441与对应负数同时存在的最大正整数
给你一个任何零的整数数组nums,找出自身与对应的负数都在数组中存在的最大正整数k。返回正整数k,如果不存在这样的整数,返回-1。
2023-05-13 20:37:24 84
原创 1015可被k除的最小整数
当k为7时,1%7=0余1 11%7=1余4((1*10+1)%7=4) 111%7=15余6((4*10+1)%7=6)所以不需要从1,11,111往后,可以采用上次的余数乘10加1也有同样的效果,具体为数学规律(自行推导)。最小正整数n仅包含数字1--->1,11,111,1111等等,但是不符合64位带符号整数。1)初步思路:while循环,从1,11,111往后直到n取余k为0.同时需要输出长度。2)优化1:1,11,111等不可能和2,5为倍数的数整除。如果不存在这样的 n ,就返回-1。
2023-05-10 13:05:38 74
原创 2437有效时间的数目
题干:给你一个长度为5的字符串time,表示一个电子时钟当前的时间,格式为"hh:mm"。可能的时间是"00:00"可能的时间是"23:59"。在字符串time中,被字符?替换掉的数位是,被替换的数字可能是0到9中的任何一个。请你返回一个整数answer,将每一个?都用0到9中一个数字替换后,可以得到的有效时间的数目。比如"?5:00"输出结果为2。
2023-05-10 08:01:22 72
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人