- 博客(11)
- 收藏
- 关注
原创 哈希表的使用
由于哈希表的存储位置数量是有限的,而可能的键的数量往往是无限的,所以在实际应用中,很难保证每个键都能被哈希函数映射到不同的位置,从而导致哈希冲突的发生。理想情况下,不同的键应该映射到不同的存储位置,但在实际应用中,可能会出现多个键映射到同一个位置的情况,这被称为哈希冲突。2.统计字符串 s 中每个字符的出现次数:遍历字符串 s 中的每个字符 i,通过计算 ord(i) - ord("a") 得到字符相对于 'a' 的偏移量(即字符在字母表中的位置),然后将对应位置的计数器加一。
2025-01-26 16:49:29
567
原创 双指针法
滑动窗口本质上也是双指针的一种应用,通过维护一个窗口的左右边界(即两个指针),动态调整窗口的大小,以满足特定的条件,常用于解决字符串或数组中的子串、子数组问题。(1).left, right = 0, len(s) - 1:初始化两个指针,left 指向列表的第一个元素(索引为 0),right 指向列表的最后一个元素(索引为 len(s) - 1)。(4). 提前返回:如果当前固定的数nums[i]已经大于0,那么由于数组已经排序,后面的所有数都会大于0,因此不可能再找到和为0的三元组,直接返回结果。
2025-01-23 17:25:18
1042
原创 前缀和及其应用
给定一个数组arr,前缀和数组prefixSum的第i个元素表示arr中前i个元素的和,即:注意,这里通常假设prefixSum[0]=0,表示空的和。计算前缀和数组假设我们有一个数组arr=[1,2,3,4,5],我们可以计算它的前缀和数组如下:prefixSum[0]=0(空的和)所以,前缀和数组prefixSum=[0,1,3,6,10,15]。
2025-01-19 17:00:33
1090
原创 python中的函数
在第二步和第三步执行时不用在代码里写出移动每个盘子的过程,用递归这种方法简化过程,由电脑自己推出过程。而n>1时需要用递归解决先把盘子分为两部分,第一部分为1个,第二部分为n-1个看为一个整体。第二步:n>1时,递推过程:第一次调用函数先把n-1个盘子当为整体从A借助C移动到B,输出打印本次过程剩下最后一个盘子从A移动到C。第三步:n>1时,回归过程:第二次调用函数先把n-1个盘子当为整体从B借助A移动到C。很多时候用递归解决问题,会简化程序,但是递归有递推的过程会占用大量空间。1).用迭代实现阶乘。
2025-01-18 09:38:44
265
原创 python列表
题目来源于力扣,以下python版本解答是只有在力扣app上才可以运行。 一、二分法查找 二分法查找的对象:只能用于升序排列或者是降序排序的数组(有序的数组)。 二分法的思路关键:循环不变量,也就是注意对循环的边界处理条件。以示例1为栗子的二分法查找思路:1.定义两个变量min、max。2.创建一个while循环,可以进入循环的条件是min<=max。因为在二分法查找目标的过程里,min或max都是动态的,根据目标值调整搜索范围。3.在while循环里创建一个mid便于划分
2025-01-12 20:58:08
569
原创 c语言的一些排序算法
本篇文章会介绍算法中的排序问题会用C语言和python两种语言实现,以及在问题中的应用,同时也会分析本次涉及的排序算法的平均运行时间添加链接描述本篇文章介绍了两种排序算法,除此以外还有快数排序,分块排序…
2024-11-01 19:58:12
881
原创 C语言中的数组
本篇文章会详细地介绍数组和指针的相关语法,以及指针与数组的常见运用。一维数组的定义:数组中存储元素的类型 数组名[ 数组长度 ]={ 存 储的元素 };二维数组的定义:数组中存储元素的类型 数组名[ 行数 ][ 列数 ]={存储的元素};int main()注意:1.数组名的命名规则同变量名的。2.一维数组/二维数组的所有元素是存储在一个连续的空间里,二维数组中存储的是多个一维数组。3. 一旦定义了,那么该数组的长度就是固定不变的。
2024-10-19 15:37:26
2104
2
原创 C语言的switch语句与if语句
switch语句在表达式结果(10个左右)有限时使用效率比使用if语句高,建议使用switch语句(switch语句编译时间更短);但是其表达式结果变多了,建议使用if语句更方便代码呈现。最后我有句很喜欢名言分享给大家:再长的路,一步步也能走完;再短的路,不迈开双脚也无法到达。——汪国真。
2024-10-02 09:37:11
3412
2
原创 python与c语言的 if语句 的联系和不同
以上可以用流程图表示,那这个的意思是------当if后面的判断条件成立 或 关系表达式的判断结果为True时,编译器就会执行该if语句后面的代码;但如果判断条件不成立 或 关系表式的判断结果为Flase,编译器不会执行该if语句后面的代码.写上面的代码就是为了告诉大家1代表True,而0代表False,当if(True)时if语句后面的代码才会被执行,那if(False)就不会执行相应的代码。从上往下依次判断,只要有一个判断成立的就执行相应的代码,如果所有的判断都不成立,就执行else对应的代码。
2024-09-25 00:38:54
1709
1
原创 关于C语言中的++ 与 --
1.前置和后置会对变量名中储存的数据进行 加1 或 减1(分别对应++ 或 --),这个是前置和后置的共同特点,但是两者都会对存储数据进行加1 或 减1 时会有两点差异,接下来我会详细介绍差异;前置是把++ 或者 -- 放在变量名的前面(可以表示为++a 或 --a);而后置是把++ 或 --放在变量名的后面(可以表现为a++ 或 a--)。当前置和后置同时使用时会有前置优先执行(即先进行先变后用),整个式子中会使用执行前置变化后的数据,直到该式子得到结果在执行后置的 自加1 或 自减1。
2024-09-23 00:31:40
1242
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人