- 博客(32)
- 收藏
- 关注
原创 力扣第二题,python解法(超详解)
这里的vlag是进位,我们在循环中不仅要以l1,l2是否为空来做判断,还要以此作为判断,因为到最后可能有进位,但l1和l2都为空的情况,temp则是我们的指针 temp = result并不是创建了一个新的对象,而是它的地址等于result这样改变temp就等于改变result。这里就能实现进位的处理,如果不判断l1和l2是否为空的话,那么在l1.val或者l2.val的时候就会出现“NoneType”的问题,score就是我们要赋给链表下一个节点的值,vlag则是我们的进位。它们每位数字都是按照。
2024-09-26 20:44:31
371
7
原创 Python面向对象编程 part 1
我们在创建模块的时候,如果想测试一个模块的功能时,可以在该模块下面附上一段代码进行测试,但是,如果我们不想删除测试代码的时候,并且一个模块中含有多个函数时,若测试函数时用了全部的模块进行测试并且在调用模块的时候只想运行一个函数时,这就必须把测试函数给删了,因为测试函数的代码在调用模块的时候会自己执行,导致执行了测试函数,这显然不是我们想要的,这个时候我们就可以用__main__来测试模块功能。import *是调用整个模块的函数的意思,但是如果我们在模块中添加了这段代码,就只会调用a,b这两个函数。
2024-09-25 08:31:57
300
原创 python函数的一些介绍
平常我们进行传参传的是位置参数,比如:函数(10,'it')这样子就会导致函数中的name=10,id = 'it',这样关键字参数的作用就体现出来了。还有另一种def han(**kwargs)#这个类型是字典,传参必须是这种形式:han(name = 'it',age = '1')比如:函数(10,name = 'it')但是如果 函数(name = 'it',10)这样子会报错。函数(id = '10',name = 'it')#这里传入的是关键字参数,就是直接进行赋值。函数可以作为参数传入函数。
2024-09-22 22:37:02
526
原创 Python基本格式,列表,元组,集合,字符串的简洁介绍
字符串可以通过'+'进行拼接,但不能与整数类型拼接字符串格式化 name = 'a'%s转化为字符串,放入占位位置 %d转为整数%f 转为浮点型,放入占位数字精度控制和宽度:%5.2f这表示 这个数字占5个位置,保留两位小数,若这个数初值为2.4,为了方便观看,用0表示空格,则输出结果为002.40特点:不限类型,不做精度控制。
2024-09-22 12:21:19
709
原创 Mysql的基本常识,DDL以及基本数据类型
还有一个特殊一点的:DECIMAL 他的大小和范围依赖于M(精度)和D(标度)的值比如说123.45,他的精度是5,标度是2注意事项:1.这些数值类型后面加个unsigned就是指无符号2.大写小写都可以3.double的格式可以这样写double(全部长度,后小数点)//括号里面的东西可加可不加。
2024-09-16 23:27:02
521
原创 内部类与外部类 其一
编写成员内部类的注意点:1.成员内部类可以被一些修饰符所修饰,比如,private,默认,protected,public等。静态内部类:(只是在内部类前加了static关键字),但是在功能上静态内部类只能询问外部类上的静态成员。那么有一个问题:当外部类成员对象和内部类成员对象重名时,在内部类该如何访问呢?内部类可以直接访问外部类的成员,包括私有。2.外部类编写方法,对外提供内部类对象。外部类要访问内布类成员,必须创建对象。获取成员内部类的方式。外部类名.this.变量名。
2024-09-13 15:26:09
168
2
原创 力扣第17题
分析:建立映射表,让数字与字母对应,但是题目的要求是要把全部的组合都列出来,要逐个组合这些数字对应的字母,所以要使用递归或者回溯完成。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。的字符串,返回所有它能表示的字母组合。
2024-09-12 22:55:09
256
原创 力扣第13题:罗马数字转整数
由题目可知,我们可以建一个哈希表,让罗马数字和阿拉伯数字一一对应,然后罗马数字如果较小的数字出现在前面,说明要拿来减的,通过这些思路,可以得到代码。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。IL 和 IM 这样的例子并不符合题目要求,49 应该写作 XLIX,999 应该写作 CMXCIX。通常情况下,罗马数字中小的数字在大的数字的右边。题目所给测试用例皆符合罗马数字书写规则,不会出现跨位等情况。是一个有效的罗马数字,且表示整数在范围。,即为两个并列的 1。
2024-09-10 23:03:12
377
原创 力扣哈希表第12题(整数转为罗马数字)
题目:罗马数字是通过添加从最高到最低的小数位值的转换而形成的。VIIVXIIXIVIXXLXCCDCMIXCMVLD给定一个整数,将其转换为罗马数字。num = 37493000 = MMM 由于 1000 (M) + 1000 (M) + 1000 (M)700 = DCC 由于 500 (D) + 100 (C) + 100 (C)40 = XL 由于 50 (L) 减 10 (X)9 = IX 由于 10 (X) 减 1 (I)
2024-09-09 16:03:09
498
原创 LeetCode第一题(梦开始的地方)
这题是一个很典型的使用哈希表的题目,一般第一时间想到的做法肯定是两个for循环进行遍历,但这样算法的时间复杂度已经到达了On的平方,这肯定不是我们想要的,所以我们可以使用哈希表来解决该题。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。整数,并返回它们的数组下标。你可以按任意顺序返回答案。,请你在该数组中找出。
2024-09-08 11:29:26
657
2
原创 java基础知识
跨平台性:Java语言的“一次编写,到处运行”特性是这一语言的重要优势,java程序编译成字节码,可以在安装了Java虚拟机(JVM,java virtual machine)的不同操作系统上运行面向对象:java是一门完全的面向对象编程语言,支持继承,抽象,封装和多态的特性内存管理:java通过垃圾回收器(Garbage Collector)自动管理内存,这就不用开发者手动释放内存了,这点就相较于C语言方便多了多线程支持:java内置了强大的多线程编程模型,适合开发并发任务。
2024-09-07 12:01:57
755
原创 java中的抽象类与抽象方法
抽象是java中的面向对象的一个重要概念,它们用于创建模板类,帮助建立通用接口,定义子类的重要的作用,但不会直接实现这些行为,以下是抽象的具体讲解及其介绍(包含注意事项)既然讲到了抽象,那也就再讲讲多态,多态指的是不同类的对象在调用同一个方法时表现出不同的行为。虽然使用父类对象,但调用方法的时候还是被子类重写的方法。对象向上转型格式:父类类型 父类对象 = 子类实例。这是用来判断一个对象是否是某个类(或接口)的实例。1.向上转型:子类对象转换为父类对象。2.向下转型:父类对象转换为子类对象。
2024-09-06 21:52:17
147
原创 哈希表概述(java)
哈希表的浅显理解就是:当插入一个新的键值对时,哈希函数将哈希为一个具体的值,这个整数将被用做数组的索引。6.删除元素:使用remove根据删除Example:map.remove();哈希表的核心是哈希函数和数组。java中哈希表的基本用法。
2024-09-05 20:22:43
153
原创 哈希表简述(java)
哈希算法在Java开发中扮演着重要角色,无论是用于数据结构中的哈希表,还是用于安全和加密的应用场景。了解哈希算法的基本原理、常见算法及其应用场景,有助于开发者更有效地利用哈希技术,提升程序的性能和安全性。
2024-09-04 20:18:36
722
原创 计算机组成原理:计算机系统概述
计算机主要使用二进制来表示数据,但人类通常使用十进制。除此之外,八进制和十六进制在计算机中也经常使用。冯·诺依曼架构是现代计算机系统的基础设计思想,其核心思想是将程序和数据存储在同一存储器中。:硬件提供了计算的物理平台,而软件通过控制硬件执行特定的任务。两者相辅相成,共同构成完整的计算机系统。浮点数用于表示小数或非常大的数。
2024-09-03 15:00:50
418
原创 2024/9/2数据库 (基本概念)
数据库(Database)是按照一定的结构组织起来的数据集合,它可以存储大量的相关数据,并允许用户或应用程序快速访问、修改和管理这些数据。数据库的核心目标是有效、可靠和安全地管理数据。
2024-09-02 20:08:31
752
1
原创 kmp算法模板
kmp算法主要是可以高效地在一堆字符串里找到你想要的子串算法的原理:当某个字符匹配失败时,利用之前已经匹配成功的信息,知道部分前缀与后缀是相等的,因此可以利用这些信息跳过一些不必要的比较。KMP算法中引入了一个关键的数组next,它用于记录模式串中前后字符重复出现的个数,以便在匹配失败时能够知道应该跳过多少字符。next数组的计算基于模式串本身,与主串无关。比如有一个主串ccaaaacdde和一个子串acaaaca加红a的位置是i,c是j+1。
2024-05-09 19:38:28
553
1
原创 快速排序变式--快速选择算法
2.调整区间(左边的数<=x,右边的数大于等于x)大体模板还是一样的,就是中间细节改一改。回顾一下这周学的快速排序。有n个数,表示第k小的数。3.递归处理左右两段。
2024-04-30 20:35:39
223
1
原创 C++/C语言指针概述
但是,有个特殊的例子 char 类型的数组,输出char类型数组的地址要强制类型转换,例如:cout<<(void*)p;数组名作为一个数组的首地址,可以通过加法来查看后面元素的地址(顺序),也可以来访问数组的元素 比如int a[ ]={2,4,5},cout<<*(a+1)的结果是4 cout<<a+1 是a下标为1元素的地址。这两者看着差不多,但含义不一样,*p=2的*是类似于引用符号一样,它使用的前提是p是指针变量,然后p表示的是一个地址,*是解引用操作符,表示该地址具体的值、
2024-04-29 20:27:56
1004
原创 离散化模板
有一个无限长的数轴(初始值均为0),现在,先进行n次操作,每次操作将某一个位置x上的数+c,接下来,进行m次询问,每个询问包含两个整数l和r,要求出在区间[l,r]之间所有数的和。可能觉得这题前缀和也可以解决,我具体数值没放出来,在数值小于1e5的范围是可以直接用前缀和的,但本题数值大,所以用离散化和前缀和的方法。//存储所有待离散化的值。比如给你一个数组a[]:3,200,500,5000。
2024-04-28 20:18:58
536
1
原创 数据结构:三种传地址方式
输出3,5并未发生实质上的交换,这是因为Swap函数中只是交换了x,y指针的值。part 1:指针变量作为参数(C语言和c++通用)part 3:以引用类型作为参数。a和b的值并未发生实质上的交换。part 2:数组名作为参数。
2024-04-27 17:33:28
324
原创 位运算以及常用的应用
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为。下面来说说原理-x等价于~x+1 //~x是x的补码的意思。那么x的补码(~x)=0101...0111111...1。~x+1(也就是-x)=0101...100000...0。x&-x(没错就是这么短) //x要是2进制表达式。2.返回x的最后一个1以及后面的数。a&b(有0为0,双1为1)a|b(有1为1,双0为0)a^b(不同为1,相同为0)a>>b(a向右移动b位)
2024-04-27 13:27:18
260
原创 算法基础:双指针算法
通俗的讲就是两个相同方向或者相反方向的指针扫描一个数组,然后根据题意来写。能用双指针算法写出来的题目一般都可以用暴力法写出来。一般的题目都可以往这个模板的方向思考。双指针算法是算法竞赛中比较常出的了。但暴力法的时间复杂度为O^n(2),请你找出其中不含有重复字符的。请注意,你的答案必须是。因为无重复字符的最长子串是。双指针的时间复杂度为O^n;因为无重复字符的最长子串是。因为无重复字符的最长子串是。,所以其长度为 3。,所以其长度为 1。,所以其长度为 3。
2024-04-26 20:48:08
914
1
原创 二维差分模板
假定有a[][]数组和b[][]数组,然后a[][]数组是b[][]数组的前缀和数组,那么b[][]数组是a[][]数组的差分数组。差分主要还是解决怎么在规定区域加上特定的数的(个人认为)那么b[][]数组是a[][]数组的差分数组。可以自己画个矩形看看(本人画的图太抽象了)(看了y总的视频对差分浅浅的理解)那么“补丁”又该怎么打上呢?具体怎么为什么这样呢?
2024-04-26 18:09:51
228
1
原创 一维数组差分
接下来输入m个操作,每个操作包含三个整数l, r, c,表示将序列中[l, r]之间的每个数加上c。也可以根据规律发现B[i]只要加上一个值,就可以对a[i]往后的数值产生变化(加上该值)然后给定数组B,使得B数组满足a[i]=B[1]+B[2]...+B[i];所以对B数组的初始化可以变成B[i]=a[i]-a[i-1];接下来m行,每行包含三个整数l,r,c,表示一个操作。有原数组a[1],a[2]...a[n];共一行,包含n个整数,表示最终序列。第二行包含n个整数,表示整数序列。
2024-04-25 23:21:59
265
1
原创 一维前缀和
比如,你要算集合区间[a,b]之间的和,平常的方法时间a[1]+a[2]...+a[a/b]的复杂度是O(n);但是前缀和数组s[b]-s[a]就是结果了,而且时间复杂度为0(1);这种思想很方便,而且在竞赛中活用这种方法可以让程序更高效。前缀和可以称作一种公式。
2024-04-25 10:24:06
227
1
原创 算法基础篇(整数二分、浮点二分模板以及讲解)
浮点二分的话相较于整型二分更简单,边界问题没那么细,相信大家做做例题就明白了,就是要注意退出循环的条件要改改(L<R)改为(R-L>1e-6)给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。这篇博客主要讲解二分模板,具体的二分原理可以去搜二分法原理博客。整数二分可以分为两个模板,注释有解释。请必须使用时间复杂度为。
2024-04-22 22:13:36
955
原创 C语言/C++快速排序讲解以及模板
这个c语言程序实现了对输入数据进行从小到大排序功能的实现,c++中有这种函数sort()可以直接拿来使用,本博客主要讲解快速排序的模版(新人第一次写博客,有什么错误的地方还望指出)算法模板我个人认为还是要以记为主(多写,并有自己的理解),自己把所有边界问题想通还是有点难的,竞赛时能用c++的话建议去看看sort()函数(毕竟用的时间差不多)
2024-04-21 23:11:55
237
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人